From d9d70577933e9cd021b4ff6d26c576d6dbd9161a Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 28 八月 2024 17:54:41 +0800 Subject: [PATCH] 点播定时任务优化 --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 77 +++++++++++++++++++++++++------------- 1 files changed, 51 insertions(+), 26 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index b26d549..d944fb8 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java @@ -44,9 +44,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import org.bytedeco.javacv.FFmpegFrameGrabber; -import org.bytedeco.javacv.Frame; -import org.bytedeco.javacv.Java2DFrameConverter; +import org.bytedeco.javacv.*; +import org.bytedeco.opencv.global.opencv_imgcodecs; +import org.bytedeco.opencv.opencv_core.Mat; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -57,6 +57,7 @@ import org.springframework.util.StringUtils; import javax.imageio.ImageIO; +import javax.swing.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -157,6 +158,7 @@ ywRecord.setCommitUser(1); ywRecord.setYwCondition("鏁呴殰绫诲瀷鏇存柊锛屽伐鍗曠姸鎬佽皟鏁翠负寰呭鐞�"); ywRecord.setCreateTime(new Date()); + ywRecord.setSysMsg(Boolean.TRUE); willAddMsg.add(ywRecord); } } else { @@ -300,7 +302,7 @@ baseMapper.updateById(workOrder); // 娣诲姞涓�鏉″鏍歌褰� WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord(); - workOrderAuditingRecord.setWorkOrderId(workOrder.getId()); + workOrderAuditingRecord.setWorkOrderNo(workOrder.getWorkOrderNo()); workOrderAuditingRecord.setAuditingUser(SecurityUtils.getLoginUser().getUserId().intValue()); workOrderAuditingRecord.setResult(form.getAuditingResult().getDesc()); workOrderAuditingRecord.setRemark(form.getAuditingRemark()); @@ -331,18 +333,18 @@ if (list.isEmpty()) { return Result.error("娌℃湁宸ュ崟鍙互瀹℃牳"); } - List<Integer> ids = list.stream().map(WorkOrder::getId).collect(Collectors.toList()); + List<String> workOrderNoList = list.stream().map(WorkOrder::getWorkOrderNo).collect(Collectors.toList()); List<String> serialNumbers = list.stream().map(WorkOrder::getSerialNumber).toList(); // 宸ュ崟鐘舵�� LambdaUpdateWrapper<WorkOrder> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); - lambdaUpdateWrapper.in(WorkOrder::getId, ids); + lambdaUpdateWrapper.in(WorkOrder::getWorkOrderNo, workOrderNoList); lambdaUpdateWrapper.set(WorkOrder::getStatus, form.getAuditingResult()); baseMapper.update(lambdaUpdateWrapper); // 娣诲姞澶氭潯瀹℃牳璁板綍 List<WorkOrderAuditingRecord> workOrderAuditingRecords = new ArrayList<>(); - for (Integer id : ids) { + for (String workOrderNo : workOrderNoList) { WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord(); - workOrderAuditingRecord.setWorkOrderId(id); + workOrderAuditingRecord.setWorkOrderNo(workOrderNo); workOrderAuditingRecord.setAuditingUser(SecurityUtils.getLoginUser().getUserId().intValue()); workOrderAuditingRecord.setResult(form.getAuditingResult().getDesc()); workOrderAuditingRecord.setRemark(form.getAuditingRemark()); @@ -390,8 +392,8 @@ } @Override - public Result selectYwConditionByYwId(Integer id) { - List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(id); + public Result selectYwConditionByYwId(String workOrderNo) { + List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo); ywConditionList.stream().forEach(item -> { if (Objects.nonNull(item.getSysMsg()) && item.getSysMsg()) { item.setCommitUserName("绯荤粺娑堟伅"); @@ -401,10 +403,10 @@ } @Override - public Result selectYwAuditingListByYwId(String id) { + public Result selectYwAuditingListByYwId(String workOrderNo) { return Result.ok().data( new LambdaQueryChainWrapper<>(workOrderAuditingRecordMapper) - .eq(WorkOrderAuditingRecord::getWorkOrderId, id) + .eq(WorkOrderAuditingRecord::getWorkOrderNo, workOrderNo) .orderByAsc(WorkOrderAuditingRecord::getCreateTime) .list()); } @@ -661,31 +663,54 @@ @Override public String getFrameImgByDevice(String deviceId, String channelId) { - String url = String.format(this.rtspServer + "/start/%s/%s", deviceId, channelId); + String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId); String result = HttpUtils.sendGet(url); + log.error("鎷垮埌鍙栨祦鍝嶅簲缁撴灉锛�" + result); WVPResult wvpResult = JSON.parseObject(result, WVPResult.class); if (0 == wvpResult.getCode()) { + log.error("璇锋眰鎴愬姛"); StreamContent data = (StreamContent) wvpResult.getData(); String rtspUrl = data.getRtsp(); + log.error("鐩爣鍦板潃锛�" + rtspUrl); if (StringUtils.hasText(rtspUrl)) { try { - // 鍒涘缓FFmpegFrameGrabber瀵硅薄 - FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(rtspUrl); - grabber.start(); // 寮�濮嬫崟鑾� + FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl); + grabber.setOption("rtsp_transport", "tcp"); // 浣跨敤tcp鐨勬柟寮忥紝涓嶇劧浼氫涪鍖呭緢涓ラ噸 + grabber.setImageWidth(960); + grabber.setImageHeight(540); + grabber.start(); + CanvasFrame canvasFrame = new CanvasFrame("姝h寕");// 鍒涘缓绐楀彛 + canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 璁剧疆绐楀彛鍏抽棴绋嬪簭鏄惁涔熻窡闅忓叧闂� + canvasFrame.setAlwaysOnTop(true); - Frame frame; - if ((frame = grabber.grabFrame()) != null) { - // 灏嗗抚杞崲涓哄浘鐗� - Java2DFrameConverter converter = new Java2DFrameConverter(); - BufferedImage image = converter.convert(frame); - File outputfile = new File(serverConfig.getUrl() + PlatformConfig.getUploadPath() + deviceId + IdUtils.fastSimpleUUID() + ".png"); - ImageIO.write(image, "png", outputfile); - String imgPath = outputfile.getAbsolutePath(); - System.out.println("Saved " + imgPath); - return imgPath; + OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat(); + int ex = 0; + String imgPath = null; + while (true) { + if (ex > 1) { + break; + } + Frame frame = grabber.grabImage(); + canvasFrame.showImage(frame); + //绋嬪簭鍒拌繖閲屽叾瀹炲凡缁忓疄鐜颁簡棰勮鐨勫姛鑳戒簡锛屼笅闈㈢殑鏂规硶灏辨槸灏嗘祦淇濆瓨鎴愬浘鐗� + + //opencv_core.Mat + Mat mat = converter.convertToMat(frame); + imgPath = serverConfig.getUrl() + PlatformConfig.getUploadPath() + deviceId + IdUtils.fastSimpleUUID() + ".png"; + opencv_imgcodecs.imwrite(imgPath, mat); + + ex++; + try { + Thread.sleep(1000); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } // 1000姣鍒锋柊涓�娆″湒鍍� } grabber.stop(); // 鍋滄鎹曡幏 grabber.release(); // 閲婃斁璧勬簮 + return imgPath; } catch (IOException e) { e.printStackTrace(); } -- Gitblit v1.8.0