From fbf22449e58c5a3b6e478faab8270cf0e30adfc9 Mon Sep 17 00:00:00 2001 From: qiushui Date: Thu, 13 Jan 2022 14:06:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=8D=E7=85=A7=20=E8=A7=86=E9=A2=91=20?= =?UTF-8?q?=E9=87=87=E7=94=A8=E5=BB=B6=E6=97=B6=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CameraControlController.java | 5 +- ...adMp4Delayed.java => CameraDelayTask.java} | 7 ++- .../zhehekeji/web/lib/DownloadConsumer.java | 9 ---- .../web/lib/DownloadMp4Executor.java | 42 --------------- .../zhehekeji/web/lib/TaskDelayExecutor.java | 54 +++++++++++++++++++ .../zhehekeji/web/service/InitService.java | 2 +- .../com/zhehekeji/web/service/PlcService.java | 35 +++++------- 7 files changed, 76 insertions(+), 78 deletions(-) rename web/src/main/java/com/zhehekeji/web/lib/{DownloadMp4Delayed.java => CameraDelayTask.java} (83%) delete mode 100644 web/src/main/java/com/zhehekeji/web/lib/DownloadConsumer.java delete mode 100644 web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Executor.java create mode 100644 web/src/main/java/com/zhehekeji/web/lib/TaskDelayExecutor.java diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java index bf70218..9c1de0d 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java @@ -292,9 +292,8 @@ public class CameraControlController { @ApiOperation(value = "立即拍照") public Result pic(@PathVariable Integer id) { checkLogin(id); - String path = "D:\\work\\qqq.jpeg"; - - cameraControlModule.pic(id,0,path); + String path = "D:\\work\\"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMDDHHmmss"))+".jpeg"; + TaskDelayExecutor.addPicDelayTask(id,path,2000L); return Result.success(); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Delayed.java b/web/src/main/java/com/zhehekeji/web/lib/CameraDelayTask.java similarity index 83% rename from web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Delayed.java rename to web/src/main/java/com/zhehekeji/web/lib/CameraDelayTask.java index d10fc2f..1251f55 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Delayed.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraDelayTask.java @@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit; @Data @AllArgsConstructor -public class DownloadMp4Delayed implements Delayed { +public class CameraDelayTask implements Delayed { private Integer cameraId; @@ -19,6 +19,11 @@ public class DownloadMp4Delayed implements Delayed { private String path; + /** + * 0 : mp4 1:jpeg + */ + private Integer type; + private long executeTime; @Override diff --git a/web/src/main/java/com/zhehekeji/web/lib/DownloadConsumer.java b/web/src/main/java/com/zhehekeji/web/lib/DownloadConsumer.java deleted file mode 100644 index 9f52af6..0000000 --- a/web/src/main/java/com/zhehekeji/web/lib/DownloadConsumer.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.zhehekeji.web.lib; - -import org.springframework.stereotype.Component; - -@Component -public class DownloadConsumer { - - -} diff --git a/web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Executor.java b/web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Executor.java deleted file mode 100644 index 0087edf..0000000 --- a/web/src/main/java/com/zhehekeji/web/lib/DownloadMp4Executor.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.zhehekeji.web.lib; - -import com.zhehekeji.common.util.SpringContextUtil; - -import java.time.LocalDateTime; -import java.util.concurrent.DelayQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -public class DownloadMp4Executor { - - private static ExecutorService exec = Executors.newFixedThreadPool(1); - - private static DelayQueue queue = new DelayQueue<>(); - - public static void addDelayTask(Integer cameraId, String path,LocalDateTime startTime, LocalDateTime endTime, Long delayTime) { - DownloadMp4Delayed downloadMp4Delayed = new DownloadMp4Delayed(cameraId, startTime, endTime,path, delayTime); - queue.add(downloadMp4Delayed); - } - - public static void runMp4DownloadExecutor(){ - exec.execute(new Consumer()); - } - - private static class Consumer implements Runnable { - - @Override - public void run() { - while (true) { - try { - DownloadMp4Delayed downloadMp4Delayed = queue.take(); - CameraControlModule cameraControlModule = SpringContextUtil.getBean(CameraControlModule.class); - cameraControlModule.downloadMp4(downloadMp4Delayed.getCameraId(), downloadMp4Delayed.getPath(),downloadMp4Delayed.getStartTime(),downloadMp4Delayed.getEndTime()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } - - -} diff --git a/web/src/main/java/com/zhehekeji/web/lib/TaskDelayExecutor.java b/web/src/main/java/com/zhehekeji/web/lib/TaskDelayExecutor.java new file mode 100644 index 0000000..049cc24 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/TaskDelayExecutor.java @@ -0,0 +1,54 @@ +package com.zhehekeji.web.lib; + +import com.zhehekeji.common.util.SpringContextUtil; + +import java.time.LocalDateTime; +import java.util.concurrent.DelayQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class TaskDelayExecutor { + + private static ExecutorService exec = Executors.newFixedThreadPool(1); + + private static DelayQueue queue = new DelayQueue<>(); + + public static void addMp4DelayTask(Integer cameraId, String path, LocalDateTime startTime, LocalDateTime endTime, Long delayTime) { + CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, startTime, endTime,path, 0,delayTime); + queue.add(cameraDelayTask); + } + + public static void addPicDelayTask(Integer cameraId, String path, Long delayTime) { + CameraDelayTask cameraDelayTask = new CameraDelayTask(cameraId, null, null,path, 1,delayTime); + queue.add(cameraDelayTask); + } + + public static void runMp4DownloadExecutor(){ + exec.execute(new Consumer()); + } + + private static class Consumer implements Runnable { + + @Override + public void run() { + while (true) { + try { + CameraControlModule cameraControlModule = SpringContextUtil.getBean(CameraControlModule.class); + CameraDelayTask cameraDelayTask = queue.take(); + if(cameraDelayTask != null){ + if(cameraDelayTask.getType() == 0){ + cameraControlModule.downloadMp4(cameraDelayTask.getCameraId(), cameraDelayTask.getPath(), cameraDelayTask.getStartTime(), cameraDelayTask.getEndTime()); + }else if(cameraDelayTask.getType() == 1){ + cameraControlModule.pic(cameraDelayTask.getCameraId(),0, cameraDelayTask.getPath()); + } + } + + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + + +} diff --git a/web/src/main/java/com/zhehekeji/web/service/InitService.java b/web/src/main/java/com/zhehekeji/web/service/InitService.java index 192bb02..3f26a5c 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -105,7 +105,7 @@ public class InitService implements ApplicationRunner { log.error("ksec no config"); } } - DownloadMp4Executor.runMp4DownloadExecutor(); + TaskDelayExecutor.runMp4DownloadExecutor(); } diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index 5cd085d..641cabe 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -3,22 +3,18 @@ package com.zhehekeji.web.service; import com.aijiao.test.JNIDemo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhehekeji.common.util.PathUtil; -import com.zhehekeji.core.util.Assert; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.*; import com.zhehekeji.web.lib.*; import com.zhehekeji.web.mapper.*; import com.zhehekeji.web.pojo.OrderVO; -import com.zhehekeji.web.pojo.stock.StockStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; -import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.HashMap; import java.util.List; /** @@ -141,11 +137,11 @@ public class PlcService { update.setColumn2(plcCmdInfo.getColumn2()); update.setRow2(plcCmdInfo.getRow2()); if (street.getCamera1Id() != null) { - String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endTime.plusSeconds(2)); + String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endTime.plusSeconds(5)); update.setVideoPath1(path); } if (street.getCamera2Id() != null) { - String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endTime.plusSeconds(2)); + String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endTime.plusSeconds(5)); update.setVideoPath2(path); } orderMapper.updateById(update); @@ -169,7 +165,7 @@ public class PlcService { public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) { String path = PathUtil.createFileName("mp4",cameraId); String realPath = configProperties.getSavePath().getMp4Path() + path; - DownloadMp4Executor.addDelayTask(cameraId,realPath,startTime,endTime,5000L); + TaskDelayExecutor.addMp4DelayTask(cameraId,realPath,startTime,endTime,7000L); //cameraControlModule.downloadMp4(cameraId,realPath,startTime,endTime); return path; } @@ -205,14 +201,11 @@ public class PlcService { Integer cameraId = getCameraByPlcCmd(plcCmdInfo,orderInfo.getLeftRight()); gyrateCameraByCode(cameraId,code); if(needCapture){ + Boolean delay = false; if(code.startsWith("C1") || code.startsWith("C3")){ - try { - Thread.sleep(1200); - } catch (InterruptedException e) { - e.printStackTrace(); - } + delay = true; } - path = cameraCapture(cameraId); + path = cameraCapture(cameraId,delay,2000L); } //update order info after capture if (path != null && needCapture) { @@ -268,10 +261,14 @@ public class PlcService { * * @Return pic address */ - public String cameraCapture(Integer cameraId) { + public String cameraCapture(Integer cameraId,Boolean delay,Long delayTime) { String path = PathUtil.createFileName("jpg",cameraId); String realPath = configProperties.getSavePath().getMediaPath() + path; - cameraControlModule.pic(cameraId,0,realPath); + if(delay){ + TaskDelayExecutor.addPicDelayTask(cameraId,realPath,delayTime); + }else { + cameraControlModule.pic(cameraId,0,realPath); + } return path; } @@ -444,13 +441,7 @@ public class PlcService { Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); Integer cameraId = getCameraByPlcCmd(plcCmdInfo,1); gyrateCameraByCode(cameraId, cmdCode); - //暂停2500ms再抓图 - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - String path = cameraCapture(cameraId); + String path = cameraCapture(cameraId,true,2500L); OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode); Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn());