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 | 106 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 87 insertions(+), 19 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 2464693..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,16 +1,32 @@ 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; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ExecutorService; @@ -30,21 +46,66 @@ private final WorkOrderService workOrderService; private final DeviceInfoMapper deviceInfoMapper; + private final WorkOrderCheckImgMapper workOrderCheckImgMapper; - private static final ExecutorService executorService = new ThreadPoolExecutor(8, - 24, - 5000, - TimeUnit.SECONDS, - new ArrayBlockingQueue<>(10), - new ThreadPoolExecutor.CallerRunsPolicy() - ); +// private static final ExecutorService executorService = new ThreadPoolExecutor(8, +// 10, +// 5000, +// TimeUnit.SECONDS, +// new ArrayBlockingQueue<>(1024), +// new ThreadPoolExecutor.CallerRunsPolicy() +// ); - public void run() { - // 鏌ュ嚭鏁呴殰鐨勮澶� - List<DeviceInfoVO> deviceList = workOrderService.hasErrorWorkOrderList(); + 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(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) .last("limit 1") @@ -53,14 +114,21 @@ return; } for (DeviceInfoVO deviceInfo : deviceList) { - executorService.submit(() -> { - // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠h〃涓�涓憚鍍忓ご锛屼篃灏辨槸璁惧id鏄彇娴佺殑閫氶亾id - String frameImg = workOrderService.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), deviceInfo.getDeviceId()); - if (StringUtils.hasText(frameImg)) { - workOrderService.updateImgById(deviceInfo.getWorkOrderId(), frameImg); - } - }); - } - } + // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠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