zhanghua
2025-03-04 0f5901bbc027e2e8d934280ca659734a61f67378
图片显示修改,删除脏数据
17个文件已修改
2个文件已添加
348 ■■■■■ 已修改文件
document/遂昌县大综合一体化驾驶舱数据源核对会议.xls 补丁 | 查看 | 原始文档 | blame | 历史
document/问题类型.xls 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/controller/FileController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/oss/OssService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/utils/ConstantPropertiesUtils.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/OSSImageMove.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/PlatformApplication.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/entity/resources/ImageResources.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/task/SynchronizeDHAlarm.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/util/SpringContextUtil.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/application-dev.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/application-prod.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-smoke/pom.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
document/Ëì²ýÏØ´ó×ÛºÏÒ»Ì廯¼ÝÊ»²ÕÊý¾ÝÔ´ºË¶Ô»áÒé.xls
Binary files differ
document/ÎÊÌâÀàÐÍ.xls
Binary files differ
pom.xml
@@ -49,7 +49,7 @@
    <modules>
        <module>ycl-platform</module>
        <module>ycl-common</module>
        <module>ycl-generator</module>
<!--        <module>ycl-generator</module>-->
        <module>ycl-smoke</module>
    </modules>
ycl-common/src/main/java/com/ycl/controller/FileController.java
@@ -10,6 +10,8 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.UnsupportedEncodingException;
@RestController
@Api(tags = "文件上传")
@RequestMapping("/file")
@@ -64,7 +66,12 @@
    @ApiOperation(value = "删除图片")
    @PostMapping("media/delete")
    public CommonResult<Boolean> deleteImages(String fileUrl) {
        boolean flag = ossService.deleteImages(fileUrl);
        boolean flag = false;
        try {
            flag = ossService.deleteImages(fileUrl);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        if (flag) {
            return CommonResult.success(true, "删除成功");
        }
ycl-common/src/main/java/com/ycl/service/oss/OssService.java
@@ -3,6 +3,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
public interface OssService {
    /**
@@ -19,7 +20,7 @@
     * @param fileUrl
     * @return
     */
    boolean deleteImages(String fileUrl);
    boolean deleteImages(String fileUrl) throws UnsupportedEncodingException;
    String uploadImages(InputStream inputStream, String ext, Integer times);
ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
@@ -3,6 +3,7 @@
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.VoidResult;
import com.ycl.service.oss.OssService;
import com.ycl.utils.ConstantPropertiesUtils;
import com.ycl.utils.common.RandomUtils;
@@ -17,6 +18,8 @@
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.net.URLDecoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -43,12 +46,14 @@
        // ä¸Šä¼ æ–‡ä»¶æµ
        try {
            // èŽ·å–æ–‡ä»¶çš„åç§°
            String strDate2 = dtf2.format(LocalDateTime.now());
            byte[] newImg = file.getBytes();
            String originalFilename = file.getOriginalFilename();
            String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
            String fileName = "sczf/" + strDate2 + RandomUtils.generateRandomInt(4) + "." + fileType;
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
            String fileName = "sczf/" + LocalDateTime.now().format(formatter) + RandomUtils.generateRandomInt(8) + fileType;
            if (".png".equalsIgnoreCase(fileType) || ".jpg".equalsIgnoreCase(fileType) || ".jpeg".equalsIgnoreCase(fileType)) {
                if (file.getSize() > 2097152) {
                    newImg = compressUnderSize(file.getBytes(), 2097152);
@@ -65,6 +70,7 @@
            // æŠŠä¸Šä¼ çš„æ–‡ä»¶è·¯å¾„返回 ï¼ˆæ‰‹åŠ¨æ‹¼æŽ¥ï¼‰
            // è¿™é‡Œè®¾ç½®å›¾ç‰‡æœ‰æ•ˆæ—¶é—´ æˆ‘设置了30å¹´
            Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
            String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
            System.out.println("上传结束--" + url + "------" + dtf2.format(LocalDateTime.now()));
@@ -148,18 +154,27 @@
    }
    @Override
    public boolean deleteImages(String fileUrl) {
    public boolean deleteImages(String fileUrl) throws UnsupportedEncodingException {
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
        //创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        String imgFile = fileUrl.replace("https://bucket-ans.oss-cn-hangzhou.aliyuncs.com/", "");
        String fileName = imgFile.substring(0, imgFile.indexOf("?"));
        String imgFile = fileUrl.replace(ConstantPropertiesUtils.PREFIX_URL, "");
        String fileName = imgFile;
        if (imgFile.contains("?")) {
            fileName = imgFile.substring(0, imgFile.indexOf("?"));
        }
        fileName = URLDecoder.decode(fileName, "UTF-8");
        // æ ¹æ®BucketName,objectName删除文件
        ossClient.deleteObject(bucketName, fileName);
        boolean b = ossClient.doesObjectExist(bucketName, fileName);
        if (b) {
            VoidResult voidResult = ossClient.deleteObject(bucketName, fileName);
            System.out.println(voidResult.toString());
        }
        ossClient.shutdown();
        return true;
    }
ycl-common/src/main/java/com/ycl/utils/ConstantPropertiesUtils.java
@@ -16,11 +16,15 @@
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;
    @Value("${aliyun.oss.prefixUrl}")
    private String prefixUrl;
    // å®šä¹‰å…¬å¼€çš„静态常量
    public static String END_POINT;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;
    public static String PREFIX_URL;
    @Override
    public void afterPropertiesSet() throws Exception {
@@ -28,5 +32,6 @@
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
        PREFIX_URL = prefixUrl;
    }
}
ycl-platform/src/main/java/com/ycl/OSSImageMove.java
New file
@@ -0,0 +1,139 @@
package com.ycl;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.entity.resources.ImageResources;
import com.ycl.mapper.resources.ImageResourcesMapper;
import com.ycl.service.oss.OssService;
import com.ycl.util.SpringContextUtil;
import com.ycl.utils.ConstantPropertiesUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
@Component
public class OSSImageMove extends Thread {
    @Resource
    ImageResourcesMapper imageResourcesMapper;
    @Autowired
    OssService ossService;
    public void run() {
        System.out.println("---------------OSSImageMove running");
        imageResourcesMapper = SpringContextUtil.getBean("imageResourcesMapper", ImageResourcesMapper.class);
        ossService = SpringContextUtil.getBean("ossServiceImpl", OssService.class);
        System.out.println("---------------OSSImageMove start");
        int i = 1;
        while (true) {
            IPage<ImageResources> page = new Page<>(i, 10);
            LambdaQueryWrapper<ImageResources> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.isNull(ImageResources::getUrl1).orderByDesc(ImageResources::getId);
            imageResourcesMapper.selectPage(page, queryWrapper);
            System.out.println("page-current:" + page.getCurrent() + "--page-total:" + page.getTotal());
            if (page.getRecords().size() > 0) {
                for (ImageResources imageResources : page.getRecords()) {
                    try {
                        System.out.println("source-url:" + imageResources.getUrl());
                        String backUrl = extracted(imageResources.getUrl());
                        System.out.println("new-url:" + imageResources.getUrl());
                        imageResources.setUrl1(backUrl);
                        imageResourcesMapper.updateById(imageResources);
                    } catch (Exception e) {
                        System.out.println("OSSImageMove-error:" + e.getMessage());
                    }
                }
            } else {
                break;
            }
            i++;
        }
        System.out.println("---------------OSSImageMove  Over");
    }
    private String extracted(String imageUrl) {
        String[] urls = imageUrl.split(",");
        StringBuilder backUrl = new StringBuilder();
        for (int j = 0; j < urls.length; j++) {
            URL url = translateOSSUrl(urls[j]);
            HttpURLConnection conn = null;
            try {
                conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(10 * 1000);
                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
                InputStream inputStream = conn.getInputStream();// é€šè¿‡è¾“入流获取图片数据
                if (inputStream != null) {
                    String picData = ossService.uploadImages(inputStream, ".png", 0);
                    backUrl.append(picData);
                }
            } catch (IOException e) {
                System.out.println("OSSImageMove-translateOSSUrl-error:" + e.getMessage());
                // throw new RuntimeException(e);
            }
        }
        return backUrl.toString();
    }
    private URL translateOSSUrl(String fileUrl) {
        OSS ossClient = null;
        try {
            String endpoint = ConstantPropertiesUtils.END_POINT;
            String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
            String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
            String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
            String[] urlArray = fileUrl.split("Expires=");
            String objectName = urlArray[0].replace(ConstantPropertiesUtils.PREFIX_URL, "");
            objectName = objectName.replace("?", "");
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // è®¾ç½®ç­¾åURL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
            Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
            // ç”Ÿæˆä»¥GET方法访问的签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
            return url;
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return null;
    }
}
ycl-platform/src/main/java/com/ycl/PlatformApplication.java
@@ -1,6 +1,7 @@
package com.ycl;
import com.dahua.netsdk.AppDemo;
import com.ycl.util.SpringContextUtil;
import com.ycl.util.VideoUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
@@ -48,5 +49,13 @@
        } catch (Exception e) {
            log.info("执行大华报警程序出错:", e.getMessage());
        }
//        try {
//            // å¯åŠ¨æ—¶ï¼Œä¿å­˜ä¸Šä¸‹æ–‡ï¼Œå¹¶ä¿å­˜ä¸ºé™æ€
//            SpringContextUtil.setAc(application);
//            new OSSImageMove().start();
//        } catch (Exception e) {
//            log.info("图片程序出错:", e.getMessage());
//        }
    }
}
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -167,10 +167,13 @@
            String[] urlArray = fileUrl.split("Expires=");
            String[] urlArray2 = urlArray[0].split("aliyuncs.com/");
//            System.out.println("-------urlArray[0]:" + urlArray[0]);
            String objectName = urlArray2[1].replace("?", "");
//            System.out.println("-------PREFIX_URL:" + ConstantPropertiesUtils.PREFIX_URL);
            String objectName = urlArray[0].replace(ConstantPropertiesUtils.PREFIX_URL, "");
            objectName = objectName.replace("?", "");
//            System.out.println("-------objectName:" + objectName);
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // è®¾ç½®ç­¾åURL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
ycl-platform/src/main/java/com/ycl/entity/resources/ImageResources.java
@@ -50,6 +50,9 @@
    @TableField("url")
    private String url;
    @TableField("url1")
    private String url1;
    /**
     * åˆ›å»ºäºº
     */
ycl-platform/src/main/java/com/ycl/task/SynchronizeDHAlarm.java
@@ -1,12 +1,16 @@
package com.ycl.task;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.common.constant.GlobalQueue;
import com.ycl.entity.video.VideoAlarmReport;
import com.ycl.entity.video.VideoPoint;
import com.ycl.service.caseHandler.IBaseCaseService;
import com.ycl.service.caseHandler.IViolationsService;
import com.ycl.service.oss.OssService;
import com.ycl.service.resources.IImageResourcesService;
import com.ycl.service.video.IVideoAlarmReportService;
import com.ycl.service.video.impl.IVideoPointService;
import com.ycl.vo.casePool.BaseCaseVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -14,6 +18,9 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@@ -31,6 +38,12 @@
    @Autowired
    private IViolationsService violationsService;
    @Autowired
    private IBaseCaseService baseCaseService;
    @Autowired
    private IImageResourcesService imageService;
    @Scheduled(cron = "0 */1 * * * ?")
    @Transactional(rollbackFor = Exception.class)
@@ -51,7 +64,7 @@
                    if (videoAlarmReport.getPicByte() != null) {
                        String extension = "jpg";
                        InputStream inputStream = new ByteArrayInputStream(videoAlarmReport.getPicByte());
                        String picData = ossService.uploadImages(inputStream, extension,0);
                        String picData = ossService.uploadImages(inputStream, extension, 0);
                        videoAlarmReport.setPicData(picData);
                    }
@@ -68,4 +81,39 @@
            }
        }
    }
    @Scheduled(cron = "0 0 15 * * ?")
    @Transactional(rollbackFor = Exception.class)
    public void deleteAlarmTask() {
        System.out.println("----------------执行清除数据任务:");
        int i = 1;
        while (true) {
            String beginTime = "2020-01-01 00:00:00";
            String endTime = LocalDateTime.now().plusDays(-3).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            Page<BaseCaseVO> page = baseCaseService.selectVideoInspection(i, 10, null, null, beginTime, endTime, null);
            System.out.println("----------------清除数据任务总条数:" + page.getTotal());
            if (page.getRecords().size() > 0) {
                page.getRecords().forEach(baseCaseVO -> {
                    String picData = baseCaseVO.getPicData();
                    String[] urls = picData.split(",");
                    for (String url : urls) {
                        try {
                            ossService.deleteImages(url);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                    }
                    baseCaseService.removeById(baseCaseVO.getBaseId());
                    imageService.removeById(baseCaseVO.getImageId());
                    System.out.println("----------------清除数据数据成功,id:" + baseCaseVO.getBaseId());
                });
            } else {
                break;
            }
            i++;
        }
    }
}
ycl-platform/src/main/java/com/ycl/util/SpringContextUtil.java
New file
@@ -0,0 +1,17 @@
package com.ycl.util;
import org.springframework.context.ApplicationContext;
public class SpringContextUtil {
    private static ApplicationContext ac;
    public static <T> T getBean(String beanName, Class<T> clazz) {
        T bean = ac.getBean(beanName, clazz);
        return bean;
    }
    public static void setAc(ApplicationContext applicationContext) {
        ac = applicationContext;
    }
}
ycl-platform/src/main/java/com/ycl/vo/casePool/BaseCaseVO.java
@@ -15,6 +15,7 @@
    private String longitude;
    private String latitude;
    private String picData;
    private Integer imageId;
    private String grade;
    private String address;
    private String algoName;
ycl-platform/src/main/resources/application-dev.yml
@@ -1,5 +1,5 @@
server:
  port: 28082
  port: 8082
  tomcat:
    uri-encoding: UTF-8
  servlet:
@@ -82,10 +82,11 @@
aliyun:
  oss:
    endpoint: https://oss-accelerate.aliyuncs.com
    endpoint: https://oss-cn-shenzhen.aliyuncs.com
    keyId: LTAIDlTWjHW0IVyW
    keySecret: 6fO78NmgyF49TK5GWFAzXuSAexl9PL
    bucketName: xshlivelesson
    prefixUrl: https://xshlivelesson.oss-cn-shenzhen.aliyuncs.com/
#专有钉钉参数
zzding :
ycl-platform/src/main/resources/application-prod.yml
@@ -86,6 +86,8 @@
    keyId: Tkf72Q1gdzETsZf6
    keySecret: tRk39S6B1kSGARRdS4DF6jxr5nBYj5
    bucketName: zhzfptoss
    # åŽŸOSS地址头
    prefixUrl: http://zhzfptoss.oss-cn-zjls-lszwy-d01-a.ops.zjlscloud.com/
#专有钉钉参数
zzding :
@@ -93,4 +95,7 @@
  app-secret : 0GPY3aQDL3l38J7p6K37DV6BCXIOLzrynU71Br36
  domain-name : openplatform-pro.ding.zj.gov.cn
  protocal : https
  tenant-id : 196729
  tenant-id : 196729
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
ycl-platform/src/main/resources/mapper/caseHandler/BaseCaseMapper.xml
@@ -278,6 +278,7 @@
        t3.longitude,
        t3.latitude,
        t4.pic_data,
        t4.id as imageId,
        t5.`name` as grade,
        t3.address,
        t3.plat_resource_id as platResourceId,
ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java
@@ -8,13 +8,17 @@
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dahua.netsdk.lib.callback.impl.AnalyzerDataCB;
import com.ycl.common.util.UtilNumber;
import com.ycl.entity.dingding.DingUserInfo;
import com.ycl.entity.user.UmsAdmin;
import com.ycl.mapper.unlawful.UnlawfulMapper;
import com.ycl.service.caseHandler.IBaseCaseService;
import com.ycl.service.caseHandler.IViolationsService;
import com.ycl.service.oss.OssService;
import com.ycl.utils.ConstantPropertiesUtils;
import com.ycl.vo.casePool.BaseCaseVO;
import net.coobird.thumbnailator.Thumbnails;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +30,8 @@
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ComponentScan("com.dahua.netsdk")
@@ -33,7 +39,13 @@
public class Test1 {
    @Autowired
    private IBaseCaseService baseCaseService;
    @Autowired
    private OssService ossService;
    @Autowired
    private IViolationsService violationsService;
    @Resource
    private UnlawfulMapper unlawfuldao;
@@ -42,7 +54,7 @@
    @Test
    void test() {
        String fileUrl = "https://huachuang-resource.oss-cn-beijing.aliyuncs.com/家庭教育/中国陶行知协会家庭教育专委会.doc?Expires=1738857178&OSSAccessKeyId=LTAIxtcfDe3fgfcf&Signature=wTwx6JA6VWbPB0skVySy9MCexog=";
        String fileUrl = "https://xshlivelesson.oss-cn-shenzhen.aliyuncs.com/2.pptx?Expires=1738857178&OSSAccessKeyId=LTAIxtcfDe3fgfcf&Signature=wTwx6JA6VWbPB0skVySy9MCexog=";
        // http://zhzfptoss.oss-cn-zjls-lszwy-d01-a.ops.zjlscloud.com/sczf/2023062950465224.jpg?Expires=2634106907&OSSAccessKeyId=Tkf72Q1gdzETsZf6&Signature=ttME%2BeFhss8wPbkRCxAsV%2FPNWGQ%3D
        OSS ossClient = null;
@@ -55,10 +67,8 @@
            String[] urlArray = fileUrl.split("Expires=");
            String[] urlArray2 = urlArray[0].split("aliyuncs.com/");
            String objectName = urlArray2[1].replace("?", "");
            String objectName = urlArray[0].replace(ConstantPropertiesUtils.PREFIX_URL, "");
            objectName = objectName.replace("?", "");
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
@@ -207,7 +217,7 @@
//    AnalyzerDataCB analyzerDataCB;
    @Test
    void alarmTest() {
    void alarmTest() throws UnsupportedEncodingException {
//        analyzerDataCB.invoke(null, 0, null, null, 0, null, 0, null);
@@ -220,6 +230,35 @@
//        AlarmListenModule.startListen(cbMessage);
//
//        System.out.println(cbMessage.data);
        //  https://xshlivelesson.oss-accelerate.aliyuncs.com/sczf/2025-02-28%2015%3A53%3A293732..JPG?Expires=2686809213&OSSAccessKeyId=LTAIDlTWjHW0IVyW&Signature=Q5WO2kQcWRpq0SQiYjBCo6rGyJE%3D"
        ossService.deleteImages("https://xshlivelesson.oss-cn-shenzhen.aliyuncs.com/sczf/2025022845414037.JPG?Expires=2686811218&OSSAccessKeyId=LTAIDlTWjHW0IVyW&Signature=5SQ7PInLkbd62zJ1aurljeO0c%2Bw%3D");
        int i = 1;
        while (true) {
            String beginTime = "2025-01-01 00:00:00";
            String endTime = LocalDateTime.now().plusDays(-4).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
            Page<BaseCaseVO> page = baseCaseService.selectVideoInspection(i, 10, null, null, beginTime, endTime, null);
            if (page.getRecords().size() > 0) {
                page.getRecords().forEach(baseCaseVO -> {
                    String picData = baseCaseVO.getPicData();
                    String[] urls = picData.split(",");
                    for (String url : urls) {
                        try {
                            ossService.deleteImages(url);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                    }
                    baseCaseService.removeById(baseCaseVO.getBaseId());
                    violationsService.removeById(baseCaseVO.getBaseId());
                });
            } else {
                break;
            }
            i++;
        }
    }
ycl-smoke/pom.xml
@@ -30,12 +30,12 @@
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.ycl</groupId>
            <artifactId>ycl-generator</artifactId>
            <version>1.0.0</version>
            <scope>compile</scope>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.ycl</groupId>-->
<!--            <artifactId>ycl-generator</artifactId>-->
<!--            <version>1.0.0</version>-->
<!--            <scope>compile</scope>-->
<!--        </dependency>-->
    </dependencies>
    <!--    <build>-->