From 4478af314d76bad20859bb798ee27804e3950964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Tue, 18 Nov 2025 17:09:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheckIntellBlinkChanel.java | 5 ++ .../executor/GetPhotoDelayExecutor.java | 69 +++++++++++++++++++ .../camera/service/plc/PLCServiceImpl.java | 8 +-- 3 files changed, 78 insertions(+), 4 deletions(-) diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkChanel.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkChanel.java index b9cd508..343331a 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkChanel.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/CheckIntellBlinkChanel.java @@ -27,6 +27,11 @@ public class CheckIntellBlinkChanel { return channelMap.get(SRMNumber); } + + + + + //拍照 public static void pictures(String SRMNumber,String taskId,String cameraType,String cameraId){ Channel channel= channelMap.get( SRMNumber); diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/GetPhotoDelayExecutor.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/GetPhotoDelayExecutor.java index ca4e3d2..1e0c06f 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/GetPhotoDelayExecutor.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/framework/netty/streetAlgorithm/executor/GetPhotoDelayExecutor.java @@ -9,7 +9,10 @@ import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.DelayQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -22,12 +25,42 @@ import java.util.concurrent.Executors; public class GetPhotoDelayExecutor { @Resource private PLCService plcService; + @Resource + private RestTemplate restTemplate; + + /** + * 发送GET请求获取照片路径 + * @param baseUrl 基础URL + * @param aisle 巷道号 + * @param side 左右方向 + * @return 包含up和down照片路径的Map + */ + public Map getPhotos(String baseUrl, String aisle, String side,String taskId) { + String url = String.format("%s?aisle=%s&side=%s&taskId=%s", baseUrl, aisle, side,taskId); + try { + // 发送GET请求并直接转换为Map + Map response = restTemplate.getForObject(url, Map.class); + return response; + } catch (Exception e) { + // 处理异常 + e.printStackTrace(); + return new HashMap<>(); + } + } // 线程池,用于执行延时任务 public static DelayQueue delayTasks = new DelayQueue<>(); private static ExecutorService exec = Executors.newFixedThreadPool(15); + + + + + + + + //先放入队列,再进行拍照,这里进行超时判断,超时后发送信息,并且删除任务 public void communicationFactory(AlgorithmDelayTask cameraDelayTask){ //放置到队列中,等待取图返回后删除 @@ -64,6 +97,42 @@ public class GetPhotoDelayExecutor { //如果队列中没有,则只记录 plcService.stockSave(cameraDelayTask); + } + public void communicationNoSetHttpFactory(AlgorithmDelayTask cameraDelayTask){ + //放置到队列中,等待取图返回后删除 +// delayTasks.add(cameraDelayTask); +// if(getCommand(cameraDelayTask.getTaskId())!=null){ +// +// } + String cameraType = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getCmdName()+"-"+cameraDelayTask.getDirection()+"-"+"up"; + String type = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getDirection()+"-"+"up"; + //拍照顶部 + CheckIntellBlinkChanel.pictures(cameraDelayTask.getSRMNumber(),cameraDelayTask.getTaskId(),cameraType + , dictDataService.parseDictData("camera_position", type).getValue()); + try { + Thread.sleep(200); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + //拍照底部 + String cameraTypeDown = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getCmdName()+"-"+cameraDelayTask.getDirection()+"-"+"down"; + String typeDown = cameraDelayTask.getSRMNumber()+"-"+cameraDelayTask.getDirection()+"-"+"down"; + CheckIntellBlinkChanel.pictures(cameraDelayTask.getSRMNumber(),cameraDelayTask.getTaskId(),cameraTypeDown + , dictDataService.parseDictData("camera_position", typeDown).getValue()); + //码位为库 货架号 层 列 + +// CheckIntellBlinkDecoder.setHttp(cameraDelayTask, dictDataService.parseDictData("camera_conf", "storageUrl").getValue()); + String storageCode = "F" + + dictDataService.parseDictData("base_conf", "library_code").getValue() + +formatNumber((Integer.parseInt(cameraDelayTask.getSRMNumber())-1)*2+cameraDelayTask.getDirection(),2) + +formatNumber(cameraDelayTask.getRow(),2) + +formatNumber(cameraDelayTask.getColumn(),2); + if (cameraDelayTask.getRow()!=0 && cameraDelayTask.getColumn()!=0) { + cameraDelayTask.setStorageCode(storageCode); + } + //如果队列中没有,则只记录 +// plcService.stockSave(cameraDelayTask); + } /** * 将数字转换为指定长度的字符串,不足部分前面补0。 diff --git a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java index 14fd9a3..211f21c 100644 --- a/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java +++ b/yudao-module-logistics/yudao-module-logistics-biz/src/main/java/cn/iocoder/yudao/module/camera/service/plc/PLCServiceImpl.java @@ -376,8 +376,8 @@ public class PLCServiceImpl implements PLCService { StockDO finalStock = stock; // 扫码枪扫描 ScanData trayCode = scanServiceFactory.scan("1", street, dataInfo, finalStock); - stock.setWmsTrayCode(trayCode.getCode()); - stock.setTrayCode(dataInfo.getTrayCode()); + stock.setTrayCode(trayCode.getCode()); + stock.setWmsTrayCode(dataInfo.getTrayCode()); if (!stock.getWmsTrayCode().equals(stock.getTrayCode())){ status.set("1"); } @@ -734,12 +734,12 @@ public class PLCServiceImpl implements PLCService { String picPath = algorithmDelayTask.getSRMNumber() + "-" + algorithmDelayTask.getCmdName() + "-" + algorithmDelayTask.getDirection() + "-" + "up"; KsecDataInfo ksecDataInfo = KsecDataInfo.toFrom(kescEntity.getData()); - stockSave(ksecDataInfo, street, sensorGunCode); +// stockSave(ksecDataInfo, street, sensorGunCode); String path = "http://" + dictDataService.parseDictData("base_conf", "local_path").getValue() + ":9007/pic"+street.getPlcId()+"/"+ kescEntity.getData().getTaskId() + "_" + picPath + ".JPEG"; algorithmDelayTask.setPath(path); algorithmDelayTask.setUuid(uuid); algorithmDelayTask.setStatus(2); - getPhotoDelayExecutor.communicationFactory(algorithmDelayTask); +// getPhotoDelayExecutor.communicationNoSetHttpFactory(algorithmDelayTask); urlResourcesService.save(URLResourcesDo.builder().url(path).uuid(uuid).type("1").little("球机拍照").build());