diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java index 5ae1d6c..c5576b2 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java @@ -17,19 +17,22 @@ public interface DeviceCamerBindRepository extends JpaRepository findByStoreroomCode(String storeroomCode); /** - * 查询库房代码 - * @param storeroomCode + * 根据设备设备id查询 + * @param deviceInfoId * @return */ - List findByStoreroomCode(String storeroomCode); + List findByDeviceInfoId(String deviceInfoId); + + } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java index e9e1699..6d878a8 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java @@ -38,11 +38,19 @@ public interface DeviceCamerBindService { void deleteBind(Set id); /** - * 通过库房名称查询 + * 通过库房代码查询 * @return */ List queryStoreroomCode(String StoreroomCode); + + /** + * 库房id + * @param deviceInfoId 设备id + * @return / + */ + List queryDeviceInfoId(String deviceInfoId); + /** * 根据时间下载 * @param time 时间戳 diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java index f8d5be3..d7dcf4e 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java @@ -35,4 +35,11 @@ public interface StoreroomService { * @return / */ List tagMenuTree(); + + /** + * 根据id查询库房 + * @param storeroomId + * @return + */ + Storeroom findById(String storeroomId); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java index 599f7dd..364beb4 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java @@ -61,10 +61,13 @@ public class DeviceCamerBindImpl implements DeviceCamerBindService { deviceinfoAll.addAll(deviceInfoList1); for (DeviceInfo d : deviceinfoAll) { - DeviceCamerBind deviceCamerBind = deviceCamerBindRepository.findByDeviceInfoId(d.getDeviceTypeId().getId()); - if (ObjectUtils.isEmpty(deviceCamerBind)) { - deviceinfoAll.remove(d); - } + List deviceCamerBind = deviceCamerBindRepository.findByDeviceInfoId(d.getId()); + deviceCamerBind.forEach(item->{ + if (ObjectUtils.isEmpty(item)) { + deviceinfoAll.remove(d); + } + }); + } return deviceinfoAll; } @@ -75,12 +78,16 @@ public class DeviceCamerBindImpl implements DeviceCamerBindService { } - @Override public List queryStoreroomCode(String storeroomCode) { return deviceCamerBindRepository.findByStoreroomCode(storeroomCode); } + @Override + public List queryDeviceInfoId(String deviceInfoId) { + return deviceCamerBindRepository.findByDeviceInfoId(deviceInfoId); + } + @Override public String downloadVideo(String time, String deviceInfoId, String deviceCamerBindId) { Long times = Long.valueOf(time); diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java index 789e66a..1305562 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java @@ -91,4 +91,9 @@ public class StoreroomImpl implements StoreroomService { return null; } + @Override + public Storeroom findById(String storeroomId) { + return storeroomRepository.findById(storeroomId).orElseGet(Storeroom::new); + } + } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java index dd8deaa..5f93c08 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/SecurityDoorController.java +++ b/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.AnonymousPostMapping; 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.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 io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -24,10 +28,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @RestController @RequestMapping("/api/securitydoor/") @@ -36,6 +37,10 @@ import java.util.Map; public class SecurityDoorController { 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"); @ApiOperation("创建记录") @@ -49,6 +54,24 @@ public class SecurityDoorController { } securityDoorService.create(securityDoor); + //获取当前时间 + String StrNowtime = DateUtils.getNowTimeInMillis(); + if (securityDoor.getAlarmLevel() == 0) { + List cameraInfoList = new ArrayList<>(); + List 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); } @@ -61,9 +84,9 @@ public class SecurityDoorController { @ApiOperation("门禁日志") @AnonymousGetMapping("initSecurityDoorLog") public ApiResponse 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("导出门禁日志") @@ -71,30 +94,30 @@ public class SecurityDoorController { @ResponseBody public void exportSecurityDoorLogList( HttpServletResponse response, - String roomName, String deviceName,String startTime,String endTime - ){ - List> logs = securityDoorService.initSecurityDoorLog(roomName,deviceName,startTime,endTime); - String[] Etitle = {"序号","状态","库房","设备名称","档案信息","档号","事件","用户","警情描述","报警时间"}; - String [][] content = new String[logs.size()][]; - for(int i = 0;i> 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]; - Map 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 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 { - ExcelUtil.setResponseHeader(response, "门禁日志"+format.format(new Date())); + ExcelUtil.setResponseHeader(response, "门禁日志" + format.format(new Date())); OutputStream os = response.getOutputStream(); wb.write(os); os.flush();