zhanghua
2025-07-16 c4c1c6cf89781eb06dc02b677a8954fdb2666c43
ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java
@@ -26,6 +26,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
@@ -175,45 +176,47 @@
                        inputStream = new ByteArrayInputStream(os.toByteArray());
                    }
                    picData = ossService.uploadImages(inputStream, extension,0);
                    picData = ossService.uploadImages(inputStream, extension, 0);
                } catch (Exception e) {
                    System.out.println("保存报警数据失败---图片上传失败:" + e.getMessage());
//                    e.printStackTrace();
                }
            }
            List<VideoAlarmReport> videoAlarmReports = new ArrayList<>();
            if (!StringUtils.isEmpty(picData)) {
                List<VideoAlarmReport> videoAlarmReports = new ArrayList<>();
            List<AlarmDataParam> alarmData = alarmParam.getAlarmData();
            for (AlarmDataParam alarmDatum : alarmData) {
                List<VideoAlarmReport> list = getByAlarmId(alarmDatum.getAlarmID());
                try {
                    Date date = sdf.parse(alarmDatum.getAlarmTime());
                    Instant instant = date.toInstant();
                    ZoneId zoneId = ZoneId.systemDefault();
                    VideoAlarmReport videoAlarmReport = VideoAlarmReport.builder()
                            .ip(cameraInf.getIp()).port(cameraInf.getPort())
                            .user(cameraInf.getUser()).password(cameraInf.getPassword())
                            .channel(cameraInf.getChannel()).platResourceId(cameraInf.getPlatResourceID())
                            .picData(picData).alarmTime(instant.atZone(zoneId).toLocalDateTime())
                            .alarmId(alarmDatum.getAlarmID()).algoType(alarmDatum.getAlgoType())
                            .alarmType(alarmDatum.getAlarmType()).alarmName(alarmDatum.getAlarmName())
                            .algoName(alarmDatum.getAlgoName()).alarmObj(JSON.toJSONString(alarmDatum.getAlarmObject()))
                            .build();
                    if (list.size() == 0) {
                List<AlarmDataParam> alarmData = alarmParam.getAlarmData();
                for (AlarmDataParam alarmDatum : alarmData) {
                    List<VideoAlarmReport> list = getByAlarmId(alarmDatum.getAlarmID());
                    try {
                        Date date = sdf.parse(alarmDatum.getAlarmTime());
                        Instant instant = date.toInstant();
                        ZoneId zoneId = ZoneId.systemDefault();
                        VideoAlarmReport videoAlarmReport = VideoAlarmReport.builder()
                                .ip(cameraInf.getIp()).port(cameraInf.getPort())
                                .user(cameraInf.getUser()).password(cameraInf.getPassword())
                                .channel(cameraInf.getChannel()).platResourceId(cameraInf.getPlatResourceID())
                                .picData(picData).alarmTime(instant.atZone(zoneId).toLocalDateTime())
                                .alarmId(alarmDatum.getAlarmID()).algoType(alarmDatum.getAlgoType())
                                .alarmType(alarmDatum.getAlarmType()).alarmName(alarmDatum.getAlarmName())
                                .algoName(alarmDatum.getAlgoName()).alarmObj(JSON.toJSONString(alarmDatum.getAlarmObject()))
                                .build();
                        if (list.size() == 0) {
                        videoAlarmReports.add(videoAlarmReport);
                            videoAlarmReports.add(videoAlarmReport);
                        this.saveBatch(videoAlarmReports, videoAlarmReports.size());
                            this.saveBatch(videoAlarmReports, videoAlarmReports.size());
                        violationsService.saveFromVideo(videoAlarmReports);
                            violationsService.saveFromVideo(videoAlarmReports);
                    } else {
                        videoAlarmReport.setId(list.get(0).getId());
                        this.updateById(videoAlarmReport);
                    }
                } catch (ParseException e) {
                    System.out.println("保存报警数据失败:" + e.getMessage());
                        } else {
                            videoAlarmReport.setId(list.get(0).getId());
                            this.updateById(videoAlarmReport);
                        }
                    } catch (ParseException e) {
                        System.out.println("保存报警数据失败:" + e.getMessage());
//                    e.printStackTrace();
                    }
                }
            }
        }
@@ -226,6 +229,15 @@
        }
    }
    @Override
    public List<VideoAlarmReport> findByChannelAndAlarmNameAndTime(String channel, String alarmName, LocalDateTime alarmTime) {
        LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>()
                .eq(VideoAlarmReport::getChannel, channel).eq(VideoAlarmReport::getAlarmName, alarmName)
                .between(VideoAlarmReport::getAlarmTime, alarmTime.plusMinutes(-3), alarmTime.plusMinutes(3));
        return this.list(queryWrapper);
    }
    private List<VideoAlarmReport> getByAlarmId(String alarmId) {
        LambdaQueryWrapper<VideoAlarmReport> queryWrapper = new LambdaQueryWrapper<VideoAlarmReport>().eq(VideoAlarmReport::getAlarmId, alarmId);
        return this.list(queryWrapper);