Browse Source

门禁日志报警,下载视频

master
刘力 2 years ago
parent
commit
2e9ebb5aa4
  1. 15
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java
  2. 10
      storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java
  3. 7
      storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java
  4. 17
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java
  5. 5
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java
  6. 83
      storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java

15
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java

@ -17,19 +17,22 @@ public interface DeviceCamerBindRepository extends JpaRepository<DeviceCamerBind
Integer countByDeviceInfoId(String deviceInfoId); Integer countByDeviceInfoId(String deviceInfoId);
/** /**
* 根据设备id 查询绑定情况
* 查询库房代码
* *
* @param deviceInfoId
* @param storeroomCode
* @return * @return
*/ */
DeviceCamerBind findByDeviceInfoId(String deviceInfoId);
List<DeviceCamerBind> findByStoreroomCode(String storeroomCode);
/** /**
* 查询库房代码
* @param storeroomCode
* 根据设备设备id查询
* @param deviceInfoId
* @return * @return
*/ */
List<DeviceCamerBind> findByStoreroomCode(String storeroomCode);
List<DeviceCamerBind> findByDeviceInfoId(String deviceInfoId);
} }

10
storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java

@ -38,11 +38,19 @@ public interface DeviceCamerBindService {
void deleteBind(Set<String> id); void deleteBind(Set<String> id);
/** /**
* 通过库房名称查询
* 通过库房代码查询
* @return * @return
*/ */
List<DeviceCamerBind> queryStoreroomCode(String StoreroomCode); List<DeviceCamerBind> queryStoreroomCode(String StoreroomCode);
/**
* 库房id
* @param deviceInfoId 设备id
* @return /
*/
List<DeviceCamerBind> queryDeviceInfoId(String deviceInfoId);
/** /**
* 根据时间下载 * 根据时间下载
* @param time 时间戳 * @param time 时间戳

7
storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java

@ -35,4 +35,11 @@ public interface StoreroomService {
* @return / * @return /
*/ */
List<Storeroom> tagMenuTree(); List<Storeroom> tagMenuTree();
/**
* 根据id查询库房
* @param storeroomId
* @return
*/
Storeroom findById(String storeroomId);
} }

17
storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java

@ -61,10 +61,13 @@ public class DeviceCamerBindImpl implements DeviceCamerBindService {
deviceinfoAll.addAll(deviceInfoList1); deviceinfoAll.addAll(deviceInfoList1);
for (DeviceInfo d : deviceinfoAll) { for (DeviceInfo d : deviceinfoAll) {
DeviceCamerBind deviceCamerBind = deviceCamerBindRepository.findByDeviceInfoId(d.getDeviceTypeId().getId());
if (ObjectUtils.isEmpty(deviceCamerBind)) {
deviceinfoAll.remove(d);
}
List<DeviceCamerBind> deviceCamerBind = deviceCamerBindRepository.findByDeviceInfoId(d.getId());
deviceCamerBind.forEach(item->{
if (ObjectUtils.isEmpty(item)) {
deviceinfoAll.remove(d);
}
});
} }
return deviceinfoAll; return deviceinfoAll;
} }
@ -75,12 +78,16 @@ public class DeviceCamerBindImpl implements DeviceCamerBindService {
} }
@Override @Override
public List<DeviceCamerBind> queryStoreroomCode(String storeroomCode) { public List<DeviceCamerBind> queryStoreroomCode(String storeroomCode) {
return deviceCamerBindRepository.findByStoreroomCode(storeroomCode); return deviceCamerBindRepository.findByStoreroomCode(storeroomCode);
} }
@Override
public List<DeviceCamerBind> queryDeviceInfoId(String deviceInfoId) {
return deviceCamerBindRepository.findByDeviceInfoId(deviceInfoId);
}
@Override @Override
public String downloadVideo(String time, String deviceInfoId, String deviceCamerBindId) { public String downloadVideo(String time, String deviceInfoId, String deviceCamerBindId) {
Long times = Long.valueOf(time); Long times = Long.valueOf(time);

5
storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java

@ -91,4 +91,9 @@ public class StoreroomImpl implements StoreroomService {
return null; return null;
} }
@Override
public Storeroom findById(String storeroomId) {
return storeroomRepository.findById(storeroomId).orElseGet(Storeroom::new);
}
} }

83
storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java

@ -3,11 +3,15 @@ package com.storeroom.modules.storeroom3d.controller;
import com.storeroom.annotaion.rest.AnonymousGetMapping; import com.storeroom.annotaion.rest.AnonymousGetMapping;
import com.storeroom.annotaion.rest.AnonymousPostMapping; import com.storeroom.annotaion.rest.AnonymousPostMapping;
import com.storeroom.exception.BaseException; import com.storeroom.exception.BaseException;
import com.storeroom.modules.device.domain.CameraInfo;
import com.storeroom.modules.device.domain.DeviceCamerBind;
import com.storeroom.modules.device.domain.Storeroom;
import com.storeroom.modules.device.service.CameraInfoService;
import com.storeroom.modules.device.service.DeviceCamerBindService;
import com.storeroom.modules.device.service.StoreroomService;
import com.storeroom.modules.storeroom3d.domain.SecurityDoor; import com.storeroom.modules.storeroom3d.domain.SecurityDoor;
import com.storeroom.modules.storeroom3d.service.SecurityDoorService; import com.storeroom.modules.storeroom3d.service.SecurityDoorService;
import com.storeroom.utils.ApiResponse;
import com.storeroom.utils.ExcelUtil;
import com.storeroom.utils.StringUtils;
import com.storeroom.utils.*;
import com.storeroom.utils.enums.ResponseStatus; import com.storeroom.utils.enums.ResponseStatus;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -24,10 +28,7 @@ import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@RestController @RestController
@RequestMapping("/api/securitydoor/") @RequestMapping("/api/securitydoor/")
@ -36,6 +37,10 @@ import java.util.Map;
public class SecurityDoorController { public class SecurityDoorController {
private final SecurityDoorService securityDoorService; private final SecurityDoorService securityDoorService;
private final DeviceCamerBindService deviceCamerBindService;
private final CameraInfoService cameraInfoService;
private final StoreroomService storeroomService;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
@ApiOperation("创建记录") @ApiOperation("创建记录")
@ -49,6 +54,24 @@ public class SecurityDoorController {
} }
securityDoorService.create(securityDoor); securityDoorService.create(securityDoor);
//获取当前时间
String StrNowtime = DateUtils.getNowTimeInMillis();
if (securityDoor.getAlarmLevel() == 0) {
List<CameraInfo> cameraInfoList = new ArrayList<>();
List<DeviceCamerBind> list = deviceCamerBindService.queryDeviceInfoId(securityDoor.getDeviceId());
list.forEach(item -> {
CameraInfo cameraInfo = new CameraInfo();
cameraInfo.setId(NanoIdUtils.randomNanoId());
cameraInfo.setDeviceCamerBindId(item);
cameraInfo.setDescription(securityDoor.getAlarmMsg());
cameraInfo.setEvent("密集架报警");
//循环从第三方设备下载视频到服务器
String fileName = deviceCamerBindService.downloadVideo(StrNowtime, item.getDeviceInfoId(), item.getId());
cameraInfo.setDownloadLink(fileName);
cameraInfoList.add(cameraInfo);
});
cameraInfoService.createAll(cameraInfoList);
}
return ApiResponse.success(ResponseStatus.SUCCESS); return ApiResponse.success(ResponseStatus.SUCCESS);
} }
@ -61,9 +84,9 @@ public class SecurityDoorController {
@ApiOperation("门禁日志") @ApiOperation("门禁日志")
@AnonymousGetMapping("initSecurityDoorLog") @AnonymousGetMapping("initSecurityDoorLog")
public ApiResponse<Object> initSecurityDoorLog( public ApiResponse<Object> initSecurityDoorLog(
String roomName, String deviceName,String startTime,String endTime, Pageable page
String roomName, String deviceName, String startTime, String endTime, Pageable page
) { ) {
return ApiResponse.success(securityDoorService.initSecurityDoorLog(roomName,deviceName,startTime,endTime,page));
return ApiResponse.success(securityDoorService.initSecurityDoorLog(roomName, deviceName, startTime, endTime, page));
} }
@ApiOperation("导出门禁日志") @ApiOperation("导出门禁日志")
@ -71,30 +94,30 @@ public class SecurityDoorController {
@ResponseBody @ResponseBody
public void exportSecurityDoorLogList( public void exportSecurityDoorLogList(
HttpServletResponse response, HttpServletResponse response,
String roomName, String deviceName,String startTime,String endTime
){
List<Map<String,Object>> logs = securityDoorService.initSecurityDoorLog(roomName,deviceName,startTime,endTime);
String[] Etitle = {"序号","状态","库房","设备名称","档案信息","档号","事件","用户","警情描述","报警时间"};
String [][] content = new String[logs.size()][];
for(int i = 0;i<logs.size();i++){
String roomName, String deviceName, String startTime, String endTime
) {
List<Map<String, Object>> logs = securityDoorService.initSecurityDoorLog(roomName, deviceName, startTime, endTime);
String[] Etitle = {"序号", "状态", "库房", "设备名称", "档案信息", "档号", "事件", "用户", "警情描述", "报警时间"};
String[][] content = new String[logs.size()][];
for (int i = 0; i < logs.size(); i++) {
content[i] = new String[Etitle.length]; content[i] = new String[Etitle.length];
Map<String,Object> map = logs.get(i);
content[i][0] = i+1+"";
Integer alarmLevel = Integer.parseInt(map.get("alarmLevel")==null?"0":map.get("alarmLevel")+"");
content[i][1] = alarmLevel ==0?"异常":"正常";
content[i][2] = map.get("roomName")+"";
content[i][3] = map.get("deviceName")+"";
content[i][4] = map.get("maintitle")+"";
content[i][5] = map.get("archiveNo")+"";
Integer alarmEvent = Integer.parseInt(map.get("alarmEvent")==null?"0":map.get("alarmEvent")+"");
content[i][6] = alarmEvent==0?"出":"进";
content[i][7] = map.get("borrowerName")+"";
content[i][8] = map.get("alarmMsg")+"";
content[i][9] = map.get("createTime")+"";
Map<String, Object> map = logs.get(i);
content[i][0] = i + 1 + "";
Integer alarmLevel = Integer.parseInt(map.get("alarmLevel") == null ? "0" : map.get("alarmLevel") + "");
content[i][1] = alarmLevel == 0 ? "异常" : "正常";
content[i][2] = map.get("roomName") + "";
content[i][3] = map.get("deviceName") + "";
content[i][4] = map.get("maintitle") + "";
content[i][5] = map.get("archiveNo") + "";
Integer alarmEvent = Integer.parseInt(map.get("alarmEvent") == null ? "0" : map.get("alarmEvent") + "");
content[i][6] = alarmEvent == 0 ? "出" : "进";
content[i][7] = map.get("borrowerName") + "";
content[i][8] = map.get("alarmMsg") + "";
content[i][9] = map.get("createTime") + "";
} }
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("sheet",Etitle,content,null);
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("sheet", Etitle, content, null);
try { try {
ExcelUtil.setResponseHeader(response, "门禁日志"+format.format(new Date()));
ExcelUtil.setResponseHeader(response, "门禁日志" + format.format(new Date()));
OutputStream os = response.getOutputStream(); OutputStream os = response.getOutputStream();
wb.write(os); wb.write(os);
os.flush(); os.flush();

Loading…
Cancel
Save