From 9606980aa32de18b4fc1cb7e3450b90c636cbf84 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 10 十月 2024 18:14:10 +0800
Subject: [PATCH] 取图片依赖注释
---
ycl-server/src/main/java/com/ycl/task/WorkOrderImgTask.java | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 102 insertions(+), 18 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 4749539..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,12 +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;
@@ -25,26 +45,90 @@
public class WorkOrderImgTask {
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();
- for (DeviceInfoVO deviceInfo : deviceList) {
- executorService.submit(() -> {
- String frameImg = workOrderService.getFrameImgByDevice(deviceInfo.getDeviceId(), deviceInfo.getChannelId());
- if (StringUtils.hasText(frameImg)) {
- workOrderService.updateImgById(deviceInfo.getWorkOrderId(), frameImg);
- }
- });
+ 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")
+ .list();
+ if (CollectionUtils.isEmpty(gbDevices)) {
+ return;
+ }
+ for (DeviceInfoVO deviceInfo : deviceList) {
+ // 鍥芥爣璁惧鐨勭紪鐮佸氨鏄彇瑙嗛娴佺殑璁惧缂栫爜锛屽浗鏍囪澶囧氨涓�涓�傚浗鏍囪澶囩殑姣忎竴涓�氶亾浠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