648540858
2024-03-28 1de344674afd6bb35b51b165bbad76dbe6299b7e
src/main/java/com/genersoft/iot/vmp/conf/CloudRecordTimer.java
@@ -41,12 +41,12 @@
    /**
     * 定时查询待删除的录像文件
     */
//    @Scheduled(fixedRate = 10000) //每五秒执行一次,方便测试
    @Scheduled(cron = "0 0 0 * * ?")   //每天的0点执行
//    @Scheduled(fixedRate = 5000)
    public void execute(){
        logger.info("[录像文件定时清理] 开始清理过期录像文件");
        // 获取配置了assist的流媒体节点
        List<MediaServerItem> mediaServerItemList =  mediaServerService.getAllWithAssistPort();
        List<MediaServerItem> mediaServerItemList =  mediaServerService.getAllOnline();
        if (mediaServerItemList.isEmpty()) {
            return;
        }
@@ -54,10 +54,10 @@
        for (MediaServerItem mediaServerItem : mediaServerItemList) {
            Calendar lastCalendar = Calendar.getInstance();
            if (mediaServerItem.getRecordDate() > 0) {
            if (mediaServerItem.getRecordDay() > 0) {
                lastCalendar.setTime(new Date());
                // 获取保存的最后截至日期,因为每个节点都有一个日期,也就是支持每个节点设置不同的保存日期,
                lastCalendar.add(Calendar.DAY_OF_MONTH, -mediaServerItem.getRecordDate());
                // 获取保存的最后截至日[期,因为每个节点都有一个日期,也就是支持每个节点设置不同的保存日期,
                lastCalendar.add(Calendar.DAY_OF_MONTH, -mediaServerItem.getRecordDay());
                Long lastDate = lastCalendar.getTimeInMillis();
                // 获取到截至日期之前的录像文件列表,文件列表满足未被收藏和保持的。这两个字段目前共能一致,
@@ -66,22 +66,16 @@
                if (cloudRecordItemList.isEmpty()) {
                    continue;
                }
                List<Integer> cloudRecordItemIdList = new ArrayList<>();
                // TODO 后续可以删除空了的过期日期文件夹
                for (CloudRecordItem cloudRecordItem : cloudRecordItemList) {
                    String date = new File(cloudRecordItem.getFilePath()).getParentFile().getName();
                    JSONObject jsonObject = zlmresTfulUtils.deleteRecordDirectory(mediaServerItem, cloudRecordItem.getApp(),
                            cloudRecordItem.getStream(), date, cloudRecordItem.getFileName());
                    if (jsonObject.getInteger("code") == 0) {
                        cloudRecordItemIdList.add(cloudRecordItem.getId());
                    }else {
                        logger.warn("[录像文件定时清理] 删除磁盘文件错误: {}", jsonObject);
                    if (jsonObject.getInteger("code") != 0) {
                        logger.warn("[录像文件定时清理] 删除磁盘文件错误: {}:{}", cloudRecordItem.getFilePath(), jsonObject);
                    }
                }
                if (cloudRecordItemIdList.isEmpty()) {
                    continue;
                }
                cloudRecordServiceMapper.deleteList(cloudRecordItemIdList, mediaServerItem.getId());
                result += cloudRecordItemIdList.size();
                result += cloudRecordServiceMapper.deleteList(cloudRecordItemList);
            }
        }
        logger.info("[录像文件定时清理] 共清理{}个过期录像文件", result);