From d268f82d25c25ebdc7a1ea30614f6cda6d3a9ae3 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 10 十月 2024 16:31:41 +0800
Subject: [PATCH] win库+大屏考核指标查询bug

---
 ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java |   97 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 74 insertions(+), 23 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java b/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
index 018a2b0..a4b6194 100644
--- a/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java
@@ -1,19 +1,29 @@
 package com.ycl.task;
 
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.ycl.config.PlatformConfig;
 import com.ycl.platform.domain.entity.DeviceInfo;
 import com.ycl.platform.domain.entity.WorkOrderCheckImg;
 import com.ycl.platform.domain.vo.DeviceInfoVO;
 import com.ycl.platform.mapper.DeviceInfoMapper;
 import com.ycl.platform.mapper.WorkOrderCheckImgMapper;
 import com.ycl.platform.service.WorkOrderService;
+import com.ycl.utils.DateUtils;
+import com.ycl.utils.uuid.IdUtils;
+import constant.Constants;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.bytedeco.javacv.FFmpegFrameGrabber;
+import org.bytedeco.javacv.Frame;
+import org.bytedeco.javacv.Java2DFrameConverter;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -38,24 +48,63 @@
     private final DeviceInfoMapper deviceInfoMapper;
     private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
 
-    private static final ExecutorService executorService = new ThreadPoolExecutor(8,
-            24,
-            5000,
-            TimeUnit.SECONDS,
-            new ArrayBlockingQueue<>(600),
-            new ThreadPoolExecutor.CallerRunsPolicy()
-    );
+//    private static final ExecutorService executorService = new ThreadPoolExecutor(8,
+//            10,
+//            5000,
+//            TimeUnit.SECONDS,
+//            new ArrayBlockingQueue<>(1024),
+//            new ThreadPoolExecutor.CallerRunsPolicy()
+//    );
 
-    public void run() {
+    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();
         ca.setTime(now);
         ca.add(Calendar.DATE, -6);
-        List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList(now, ca.getTime());
+        List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList(DateUtils.getDayStart(ca.getTime()), DateUtils.getDayEnd(now));
         if (CollectionUtils.isEmpty(deviceList)) {
             return;
         }
+        log.info("姝ゆ鍏辨娴嬪伐鍗曞浘鐗囧伐鍗曟暟" + deviceList.size());
         // 鏌ュ嚭鍥芥爣璁惧锛屽氨涓�鏉℃暟鎹�
         List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper)
                 .orderByDesc(DeviceInfo::getUpdateTime)
@@ -65,19 +114,21 @@
             return;
         }
         for (DeviceInfoVO deviceInfo : deviceList) {
-            executorService.submit(() -> {
-                // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠h〃涓�涓憚鍍忓ご锛屼篃灏辨槸璁惧id鏄彇娴佺殑閫氶亾id
-                String frameImg = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), deviceInfo.getDeviceId(), deviceInfo.getWorkOrderNo());
-                if (StringUtils.hasText(frameImg)) {
-                    WorkOrderCheckImg img = new WorkOrderCheckImg();
-                    img.setWorkOrderNo(deviceInfo.getWorkOrderNo());
-                    img.setImgUrl(frameImg);
-                    img.setCreateTime(new Date());
-                    workOrderCheckImgMapper.insert(img);
-                }
-            });
-        }
-        executorService.shutdown();
-    }
+            // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠h〃涓�涓憚鍍忓ご锛屼篃灏辨槸璁惧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);
+            }
+        }    }
 
 }

--
Gitblit v1.8.0