rain
2024-07-02 82a90f791678dddbc6e1b98ee9e8028b61a38dfe
修改环境冲突
6 files modified
426 ■■■■ changed files
pom.xml 16 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java 46 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/media/service/IFileService.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java 344 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/controller/PatchesController.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java 16 ●●●● patch | view | raw | blame | history
pom.xml
@@ -318,14 +318,14 @@
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>16</source>
                    <target>16</target>
                </configuration>
            </plugin>
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-compiler-plugin</artifactId>-->
<!--                <configuration>-->
<!--                    <source>16</source>-->
<!--                    <target>16</target>-->
<!--                </configuration>-->
<!--            </plugin>-->
        </plugins>
        <!--配置后才可以扫描到xml文件-->
src/main/java/com/dji/sample/manage/service/impl/LiveStreamServiceImpl.java
@@ -125,15 +125,15 @@
        //相机已经在直播中,请勿重复开启直播
        if(receiveReply.getResult() == 513003) {
            LiveDTO live = new LiveDTO();
//            live.setUrl(liveParam.getUrl().replace("rtmp", "https").replace("735","700") + ".flv");
            LiveUrlGB28181DTO gb28181 = urlToGB28181(liveParam.getUrl());
            live.setUrl(new StringBuilder()
                    .append("https://wrj.shuixiongit.com/zb/rtp/")
                    .append(gb28181.getAgentID())
                    .append("_")
                    .append(gb28181.getChannel())
                    .append(".live.flv")
                    .toString());
            live.setUrl(liveParam.getUrl().replace("rtmp", "https").replace("735","700") + ".flv");
//            LiveUrlGB28181DTO gb28181 = urlToGB28181(liveParam.getUrl());
//            live.setUrl(new StringBuilder()
//                    .append("https://wrj.shuixiongit.com/zb/rtp/")
//                    .append(gb28181.getAgentID())
//                    .append("_")
//                    .append(gb28181.getChannel())
//                    .append(".live.flv")
//                    .toString());
            return ResponseResult.success(live);
        }
@@ -150,27 +150,27 @@
//                live.setUrl(liveParam.getUrl().replace("rtmp", "webrtc"));
                live.setUrl(liveParam.getUrl().replace("rtmp", "https").replace("735","700") + ".flv");
                break;
//            case GB28181:
//                LiveUrlGB28181DTO gb28181 = urlToGB28181(liveParam.getUrl());
//                live.setUrl(new StringBuilder()
//                        .append("webrtc://")
//                        .append(gb28181.getServerIP())
//                        .append("/live/")
//                        .append(gb28181.getAgentID())
//                        .append("@")
//                        .append(gb28181.getChannel())
//                        .toString());
//                break;
            case GB28181:
                LiveUrlGB28181DTO gb28181 = urlToGB28181(liveParam.getUrl());
                live.setUrl(new StringBuilder()
                        .append("https://wrj.shuixiongit.com/zb/rtp/")
                        .append("webrtc://")
                        .append(gb28181.getServerIP())
                        .append("/live/")
                        .append(gb28181.getAgentID())
                        .append("_")
                        .append("@")
                        .append(gb28181.getChannel())
                        .append(".live.flv")
                        .toString());
                break;
//            case GB28181:
//                LiveUrlGB28181DTO gb28181 = urlToGB28181(liveParam.getUrl());
//                live.setUrl(new StringBuilder()
//                        .append("https://wrj.shuixiongit.com/zb/rtp/")
//                        .append(gb28181.getAgentID())
//                        .append("_")
//                        .append(gb28181.getChannel())
//                        .append(".live.flv")
//                        .toString());
//                break;
            case RTSP:
                String url = receiveReply.getOutput().toString();
                this.resolveUrlUser(url, live);
src/main/java/com/dji/sample/media/service/IFileService.java
@@ -48,7 +48,7 @@
     * @throws ImageProcessingException
     */
    void saveMarkFile(String workspaceId, FileUploadDTO file) throws IOException, FontFormatException, ImageProcessingException;
    void updateMarkMediaFileNames(String jobId);
//    void updateMarkMediaFileNames(String jobId);
    /**
     * 获取媒体文件状态
     * @param fileId
src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -454,171 +454,171 @@
    }
    public void updateMediaFileNames(String jobId) {
        // 查询符合条件的数据
        List<MediaFileEntity> mediaFiles = mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
                        .eq(MediaFileEntity::getJobId, jobId)
//                .eq(MediaFileMarkEntity::getIsadd, 0)
        );
        // 筛选出name字段不包含'~'的数据
        List<MediaFileEntity> filteredFiles = mediaFiles.stream()
                .filter(file -> !file.getFileName().contains("~"))
                .toList();
        for (MediaFileEntity currentFile : filteredFiles) {
            String currentName = currentFile.getFileName();
            Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class);
            Long currentCreatedTime = (Long) currentMetadata.get("createdTime");
            // 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据
            Optional<MediaFileEntity> closestFileOpt = mediaFiles.stream()
                    .filter(file -> {
                        Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
                        Long createdTime = (Long) metadata.get("createdTime");
                        String filename = file.getFileName();
                        return createdTime < currentCreatedTime && filename.contains("~");
                    })
                    .min((file1, file2) -> {
                        Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
                        Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
                        Long time1 = (Long) metadata1.get("createdTime");
                        Long time2 = (Long) metadata2.get("createdTime");
                        return Long.compare(currentCreatedTime - time1, currentCreatedTime - time2);
                    });
            if (closestFileOpt.isEmpty()) {
                // 找不到小于的文件,尝试找大于且最接近的文件
                closestFileOpt = mediaFiles.stream()
                        .filter(file -> {
                            Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
                            Long createdTime = (Long) metadata.get("createdTime");
                            String filename = file.getFileName();
                            return createdTime > currentCreatedTime && filename.contains("~");
                        })
                        .min((file1, file2) -> {
                            Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
                            Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
                            Long time1 = (Long) metadata1.get("createdTime");
                            Long time2 = (Long) metadata2.get("createdTime");
                            return Long.compare(time1 - currentCreatedTime, time2 - currentCreatedTime);
                        });}
            if (closestFileOpt.isEmpty()) {
                throw new RuntimeException("当前图片无法绑定图斑");
            }
            // 提取并替换name字段
            closestFileOpt.ifPresent(closestFile -> {
                String closestName = closestFile.getFileName();
                int startIndex = closestName.indexOf("V");
                if (closestName.contains("W")) {
                    startIndex = closestName.indexOf("W");
                }
                if (closestName.contains("Z")) {
                    startIndex = closestName.indexOf("Z");
                }
                int endIndex = closestName.indexOf(".", startIndex);
                String replacement = closestName.substring(startIndex, endIndex);
                int currentStartIndex = currentName.indexOf("V");
                if (currentName.contains("W")) {
                    currentStartIndex = closestName.indexOf("W");
                }
                if (currentName.contains("Z")) {
                    currentStartIndex = closestName.indexOf("Z");
                }
                int currentEndIndex = currentName.indexOf(".", currentStartIndex);
                String newName = currentName.substring(0, currentStartIndex)
                        + replacement
                        + currentName.substring(currentEndIndex);
                currentFile.setFileName(newName);
                updateMediaById(currentFile.getId(), currentFile);
            });
        }
    }
    @Override
    public void updateMarkMediaFileNames(String jobId) {
        try {
            // 查询符合条件的数据
            List<MediaFileMarkEntity> mediaFiles = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>()
                            .eq(MediaFileMarkEntity::getJobId, jobId)
//                .eq(MediaFileMarkEntity::getIsadd, 0)
            );
            // 筛选出name字段不包含'~'的数据
            List<MediaFileMarkEntity> filteredFiles = mediaFiles.stream()
                    .filter(file -> !file.getFileName().contains("~"))
                    .toList();
            for (MediaFileMarkEntity currentFile : filteredFiles) {
                String currentName = currentFile.getFileName();
                Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class);
                Long currentCreatedTime = (Long) currentMetadata.get("createdTime");
                // 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据
                Optional<MediaFileMarkEntity> closestFileOpt = mediaFiles.stream()
                        .filter(file -> {
                            Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
                            Long createdTime = (Long) metadata.get("createdTime");
                            String filename = file.getFileName();
                            return createdTime < currentCreatedTime && filename.contains("~");
                        })
                        .min((file1, file2) -> {
                            Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
                            Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
                            Long time1 = (Long) metadata1.get("createdTime");
                            Long time2 = (Long) metadata2.get("createdTime");
                            return Long.compare(currentCreatedTime - time1, currentCreatedTime - time2);
                        });
                if (closestFileOpt.isEmpty()) {
                    // 找不到小于的文件,尝试找大于且最接近的文件
                    closestFileOpt = mediaFiles.stream()
                            .filter(file -> {
                                Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
                                Long createdTime = (Long) metadata.get("createdTime");
                                String filename = file.getFileName();
                                return createdTime > currentCreatedTime && filename.contains("~");
                            })
                            .min((file1, file2) -> {
                                Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
                                Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
                                Long time1 = (Long) metadata1.get("createdTime");
                                Long time2 = (Long) metadata2.get("createdTime");
                                return Long.compare(time1 - currentCreatedTime, time2 - currentCreatedTime);
                            });
                }
                if (closestFileOpt.isEmpty()) {
                    throw new RuntimeException("没有符合时间的对象");
                }
                // 提取并替换name字段
                closestFileOpt.ifPresent(closestFile -> {
                    String closestName = closestFile.getFileName();
                    int startIndex = closestName.indexOf("V");
                    if (closestName.contains("W")) {
                        startIndex = closestName.indexOf("W");
                    }
                    if (closestName.contains("Z")) {
                        startIndex = closestName.indexOf("Z");
                    }
                    int endIndex = closestName.indexOf(".", startIndex);
                    String replacement = closestName.substring(startIndex, endIndex);
                    int currentStartIndex = currentName.indexOf("V");
                    if (currentName.contains("W")) {
                        currentStartIndex = closestName.indexOf("W");
                    }
                    if (currentName.contains("Z")) {
                        currentStartIndex = closestName.indexOf("Z");
                    }
                    int currentEndIndex = currentName.indexOf(".", currentStartIndex);
                    String newName = currentName.substring(0, currentStartIndex)
                            + replacement
                            + currentName.substring(currentEndIndex);
                    currentFile.setFileName(newName);
                    updateById(currentFile.getId(), currentFile);
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
//    public void updateMediaFileNames(String jobId) {
//        // 查询符合条件的数据
//        List<MediaFileEntity> mediaFiles = mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
//                        .eq(MediaFileEntity::getJobId, jobId)
////                .eq(MediaFileMarkEntity::getIsadd, 0)
//        );
//
//        // 筛选出name字段不包含'~'的数据
//        List<MediaFileEntity> filteredFiles = mediaFiles.stream()
//                .filter(file -> !file.getFileName().contains("~"))
//                .toList();
//        for (MediaFileEntity currentFile : filteredFiles) {
//            String currentName = currentFile.getFileName();
//            Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class);
//            Long currentCreatedTime = (Long) currentMetadata.get("createdTime");
//            // 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据
//            Optional<MediaFileEntity> closestFileOpt = mediaFiles.stream()
//                    .filter(file -> {
//                        Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
//                        Long createdTime = (Long) metadata.get("createdTime");
//                        String filename = file.getFileName();
//                        return createdTime < currentCreatedTime && filename.contains("~");
//                    })
//                    .min((file1, file2) -> {
//                        Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
//                        Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
//                        Long time1 = (Long) metadata1.get("createdTime");
//                        Long time2 = (Long) metadata2.get("createdTime");
//                        return Long.compare(currentCreatedTime - time1, currentCreatedTime - time2);
//                    });
//            if (closestFileOpt.isEmpty()) {
//                // 找不到小于的文件,尝试找大于且最接近的文件
//                closestFileOpt = mediaFiles.stream()
//                        .filter(file -> {
//                            Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
//                            Long createdTime = (Long) metadata.get("createdTime");
//                            String filename = file.getFileName();
//                            return createdTime > currentCreatedTime && filename.contains("~");
//                        })
//                        .min((file1, file2) -> {
//                            Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
//                            Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
//                            Long time1 = (Long) metadata1.get("createdTime");
//                            Long time2 = (Long) metadata2.get("createdTime");
//                            return Long.compare(time1 - currentCreatedTime, time2 - currentCreatedTime);
//                        });}
//            if (closestFileOpt.isEmpty()) {
//                throw new RuntimeException("当前图片无法绑定图斑");
//            }
//            // 提取并替换name字段
//            closestFileOpt.ifPresent(closestFile -> {
//                String closestName = closestFile.getFileName();
//                int startIndex = closestName.indexOf("V");
//                if (closestName.contains("W")) {
//                    startIndex = closestName.indexOf("W");
//                }
//                if (closestName.contains("Z")) {
//                    startIndex = closestName.indexOf("Z");
//                }
//                int endIndex = closestName.indexOf(".", startIndex);
//                String replacement = closestName.substring(startIndex, endIndex);
//                int currentStartIndex = currentName.indexOf("V");
//                if (currentName.contains("W")) {
//                    currentStartIndex = closestName.indexOf("W");
//                }
//                if (currentName.contains("Z")) {
//                    currentStartIndex = closestName.indexOf("Z");
//                }
//                int currentEndIndex = currentName.indexOf(".", currentStartIndex);
//                String newName = currentName.substring(0, currentStartIndex)
//                        + replacement
//                        + currentName.substring(currentEndIndex);
//                currentFile.setFileName(newName);
//                updateMediaById(currentFile.getId(), currentFile);
//            });
//        }
//    }
//
//    @Override
//    public void updateMarkMediaFileNames(String jobId) {
//        try {
//
//
//            // 查询符合条件的数据
//            List<MediaFileMarkEntity> mediaFiles = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>()
//                            .eq(MediaFileMarkEntity::getJobId, jobId)
////                .eq(MediaFileMarkEntity::getIsadd, 0)
//            );
//
//
//            // 筛选出name字段不包含'~'的数据
//            List<MediaFileMarkEntity> filteredFiles = mediaFiles.stream()
//                    .filter(file -> !file.getFileName().contains("~"))
//                    .toList();
//
//            for (MediaFileMarkEntity currentFile : filteredFiles) {
//                String currentName = currentFile.getFileName();
//                Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class);
//                Long currentCreatedTime = (Long) currentMetadata.get("createdTime");
//                // 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据
//                Optional<MediaFileMarkEntity> closestFileOpt = mediaFiles.stream()
//                        .filter(file -> {
//                            Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
//                            Long createdTime = (Long) metadata.get("createdTime");
//                            String filename = file.getFileName();
//                            return createdTime < currentCreatedTime && filename.contains("~");
//                        })
//                        .min((file1, file2) -> {
//                            Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
//                            Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
//                            Long time1 = (Long) metadata1.get("createdTime");
//                            Long time2 = (Long) metadata2.get("createdTime");
//                            return Long.compare(currentCreatedTime - time1, currentCreatedTime - time2);
//                        });
//                if (closestFileOpt.isEmpty()) {
//                    // 找不到小于的文件,尝试找大于且最接近的文件
//                    closestFileOpt = mediaFiles.stream()
//                            .filter(file -> {
//                                Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
//                                Long createdTime = (Long) metadata.get("createdTime");
//                                String filename = file.getFileName();
//                                return createdTime > currentCreatedTime && filename.contains("~");
//                            })
//                            .min((file1, file2) -> {
//                                Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
//                                Map<String, Object> metadata2 = JSON.parseObject(JSON.toJSONString(file2.getMetadata()), Map.class);
//                                Long time1 = (Long) metadata1.get("createdTime");
//                                Long time2 = (Long) metadata2.get("createdTime");
//                                return Long.compare(time1 - currentCreatedTime, time2 - currentCreatedTime);
//                            });
//                }
//                if (closestFileOpt.isEmpty()) {
//                    throw new RuntimeException("没有符合时间的对象");
//                }
//                // 提取并替换name字段
//                closestFileOpt.ifPresent(closestFile -> {
//                    String closestName = closestFile.getFileName();
//                    int startIndex = closestName.indexOf("V");
//                    if (closestName.contains("W")) {
//                        startIndex = closestName.indexOf("W");
//                    }
//                    if (closestName.contains("Z")) {
//                        startIndex = closestName.indexOf("Z");
//                    }
//                    int endIndex = closestName.indexOf(".", startIndex);
//                    String replacement = closestName.substring(startIndex, endIndex);
//                    int currentStartIndex = currentName.indexOf("V");
//                    if (currentName.contains("W")) {
//                        currentStartIndex = closestName.indexOf("W");
//                    }
//                    if (currentName.contains("Z")) {
//                        currentStartIndex = closestName.indexOf("Z");
//                    }
//                    int currentEndIndex = currentName.indexOf(".", currentStartIndex);
//                    String newName = currentName.substring(0, currentStartIndex)
//                            + replacement
//                            + currentName.substring(currentEndIndex);
//                    currentFile.setFileName(newName);
//                    updateById(currentFile.getId(), currentFile);
//                });
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
    public void updateById(Integer id, MediaFileMarkEntity entity) {
        entity.setIsadd(1);
@@ -633,13 +633,13 @@
        mapper.update(entity, updateWrapper);
    }
    public void getNoaddFile() {
        List<MediaFileMarkEntity> markEntities = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>().eq(MediaFileMarkEntity::getIsadd, 0));
        for (MediaFileMarkEntity mark : markEntities) {
            updateMarkMediaFileNames(mark.getJobId());
            updateMediaFileNames(mark.getJobId());
        }
    }
//    public void getNoaddFile() {
//        List<MediaFileMarkEntity> markEntities = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>().eq(MediaFileMarkEntity::getIsadd, 0));
//        for (MediaFileMarkEntity mark : markEntities) {
//            updateMarkMediaFileNames(mark.getJobId());
//            updateMediaFileNames(mark.getJobId());
//        }
//    }
}
src/main/java/com/dji/sample/patches/controller/PatchesController.java
@@ -202,7 +202,7 @@
                                                                           @RequestParam(name = "page_size", defaultValue = "10") Integer pageSize,
                                                                           @RequestParam String workspaceId,
                                                                           @RequestParam String dkbh) {
        fileService.getNoaddFile();
//        fileService.getNoaddFile();
        try {
            PatchesParam param = PatchesParam.builder()
                    .page(page)
src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java
@@ -97,20 +97,20 @@
    public PaginationData getPhoto(PatchesParam param, String dkbh) {
        LotInfo lotInfo=getLotinfoToDb(dkbh);
        int statue=lotInfo.getIsPush();
        if (statue==0){
        Page<MediaFileEntity> page = fileMapper.selectPage(new Page<MediaFileEntity>(param.getPage(), param.getPageSize()),
                new LambdaQueryWrapper<MediaFileEntity>().like(MediaFileEntity::getFileName, "%" + dkbh + "~" + "%"));
        List<MediaFileEntity> records = page.getRecords()
                .stream()
                .collect(Collectors.toList());
        return new PaginationData<MediaFileEntity>(records, new Pagination(page));}
        else {
        if (statue==1){
            Page<MediaFileMarkEntity> page = markMapper.selectPage(new Page<MediaFileMarkEntity>(param.getPage(), param.getPageSize()),
                    new LambdaQueryWrapper<MediaFileMarkEntity>().like(MediaFileMarkEntity::getFileName, "%" + dkbh + "~" + "%"));
            List<MediaFileMarkEntity> records = page.getRecords()
                    .stream()
                    .collect(Collectors.toList());
            return new PaginationData<MediaFileMarkEntity>(records, new Pagination(page));}
        else {
            Page<MediaFileEntity> page = fileMapper.selectPage(new Page<MediaFileEntity>(param.getPage(), param.getPageSize()),
                    new LambdaQueryWrapper<MediaFileEntity>().like(MediaFileEntity::getFileName, "%" + dkbh + "~" + "%"));
            List<MediaFileEntity> records = page.getRecords()
                    .stream()
                    .collect(Collectors.toList());
            return new PaginationData<MediaFileEntity>(records, new Pagination(page));}
    }