zxl
2025-06-05 29d3c47cc6c903c09b386649fabaebc81cbeca27
ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
@@ -48,53 +48,15 @@
    private final DeviceInfoMapper deviceInfoMapper;
    private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
//    private static final ExecutorService executorService = new ThreadPoolExecutor(8,
//            10,
//            5000,
//            TimeUnit.SECONDS,
//            new ArrayBlockingQueue<>(1024),
//            new ThreadPoolExecutor.CallerRunsPolicy()
//    );
    private static final ExecutorService executorService = new ThreadPoolExecutor(16,
            128,
            5000,
            TimeUnit.SECONDS,
            new ArrayBlockingQueue<>(1000),
            new ThreadPoolExecutor.CallerRunsPolicy()
    );
    public void run() throws FFmpegFrameGrabber.Exception {
//        String rtspUrl = "http://www.w3school.com.cn/i/movie.mp4";
//        if (StringUtils.hasText(rtspUrl)) {
//            FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
//            try {
////                    grabber.setOption("rtsp_transport", "tcp"); // 使用tcp的方式,不然会丢包很严重
//                grabber.setImageWidth(1920);
//                grabber.setImageHeight(1080);
//                grabber.setFrameRate(25);
//                grabber.start();
//                System.out.println("成功");
//                Frame frame = grabber.grabImage();
//                String imgUrl = null;
//                if (frame != null) {
//                    System.out.println("成功2");
//                    //转换图像
//                    Java2DFrameConverter converter = new Java2DFrameConverter();
//                    BufferedImage srcImage = converter.getBufferedImage(frame);
//                    System.out.println(srcImage);
//                    if (srcImage != null) {
//                        imgUrl = IdUtils.fastSimpleUUID() + ".png";
//                        // 生成图片路径
//                        String imgPath = "/" + imgUrl;
//                        System.out.println("图片保存地址:" + imgPath);
////                        imgUrl = Constants.RESOURCE_PREFIX + "/" + imgUrl;
//                        //创建文件
//                        File file = new File("D:\\Codes\\zgyw\\"+imgUrl);
//                        //输出文件
//                        ImageIO.write(srcImage, "png", file);
//                    }
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            } finally {
//                grabber.stop(); // 停止捕获
////                grabber.close(); // 释放资源
//            }
//        }
        // 查出最近一周的故障的设备
        Date now = new Date();
        Calendar ca = Calendar.getInstance();
@@ -114,21 +76,24 @@
            return;
        }
        for (DeviceInfoVO deviceInfo : deviceList) {
            // 国标设备的编码就是取视频流的设备编码,国标设备就一个。国标设备的每一个通道代表一个摄像头,也就是设备id是取流的通道id
            String frameImg = null;
            try {
                frameImg = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), deviceInfo.getDeviceId(), deviceInfo.getWorkOrderNo());
            } catch (Exception e) {
                e.printStackTrace();
                continue;
            }
            if (StringUtils.hasText(frameImg)) {
                WorkOrderCheckImg img = new WorkOrderCheckImg();
                img.setWorkOrderNo(deviceInfo.getWorkOrderNo());
                img.setImgUrl(frameImg);
                img.setCreateTime(new Date());
                workOrderCheckImgMapper.insert(img);
            }
        }    }
            executorService.submit(() -> {
                // 国标设备的编码就是取视频流的设备编码,国标设备就一个。国标设备的每一个通道代表一个摄像头,也就是设备id是取流的通道id
                String frameImg = null;
                try {
                    frameImg = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), deviceInfo.getDeviceId(), deviceInfo.getWorkOrderNo());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if (StringUtils.hasText(frameImg)) {
                    WorkOrderCheckImg img = new WorkOrderCheckImg();
                    img.setWorkOrderNo(deviceInfo.getWorkOrderNo());
                    img.setImgUrl(frameImg);
                    img.setCreateTime(new Date());
                    workOrderCheckImgMapper.insert(img);
                }
            });
        }
        log.info("工单检测图片结束");
    }
}