Compare commits

...

2 Commits

Author SHA1 Message Date
LAPTOP-S9HJSOEB\昊天 982af4127c no message 4 weeks ago
LAPTOP-S9HJSOEB\昊天 bcd7155fa1 增加多个拍照 1 month ago

2
.gitignore vendored

@ -34,7 +34,7 @@ build/
### Logs ### ### Logs ###
logs/* logs/*
log/ log/*
logs/ logs/
*.log *.log

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,2 +0,0 @@
2026-05-15 00:10:00.082 [scheduling-1] INFO [com.example.lxcameraapi.service.cron.CronTab] - corn delete file
2026-05-15 00:10:00.086 [scheduling-1] INFO [com.example.lxcameraapi.service.cron.CronTab] - free space :0

@ -1,153 +0,0 @@
2026-05-14 10:42:46.219 [task-7] ERROR [com.example.lxcameraapi.service.HttpNotifyService] - 发送箱子计数结果失败: http://127.0.0.1:48080/admin-api/logistics/StockController/singleInventoryReturn
java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:278)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:304)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:291)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:347)
at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:399)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:827)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:759)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1706)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:531)
at com.example.lxcameraapi.service.HttpNotifyService.sendBoxCountResult(HttpNotifyService.java:66)
at com.example.lxcameraapi.service.AsyncProcessingService.processCategoryAsync(AsyncProcessingService.java:86)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2026-05-14 10:42:48.418 [task-8] ERROR [com.example.lxcameraapi.service.HttpNotifyService] - 发送HTTP请求失败: http://127.0.0.1:48080/admin-api/logistics/StockController/singleInventoryQrCodeReturn
java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:278)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:304)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:291)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:347)
at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:399)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:827)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:759)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1706)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:531)
at com.example.lxcameraapi.service.HttpNotifyService.sendQrCodeResult(HttpNotifyService.java:134)
at com.example.lxcameraapi.service.AsyncProcessingService.processQrCodeAsync(AsyncProcessingService.java:178)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2026-05-14 11:04:02.710 [task-11] ERROR [com.example.lxcameraapi.service.HttpNotifyService] - 发送HTTP请求失败: http://127.0.0.1:48080/admin-api/logistics/StockController/singleInventoryQrCodeReturn
java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:278)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:304)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:291)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:347)
at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:399)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:827)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:759)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1706)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:531)
at com.example.lxcameraapi.service.HttpNotifyService.sendQrCodeResult(HttpNotifyService.java:134)
at com.example.lxcameraapi.service.AsyncProcessingService.processQrCodeAsync(AsyncProcessingService.java:178)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2026-05-14 11:08:33.483 [task-12] ERROR [com.example.lxcameraapi.service.HttpNotifyService] - 发送箱子计数结果失败: http://127.0.0.1:48080/admin-api/logistics/StockController/singleInventoryReturn
java.net.ConnectException: Connection refused: getsockopt
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:690)
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
at java.base/java.net.Socket.connect(Socket.java:751)
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:178)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:531)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:636)
at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:282)
at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:386)
at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:408)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1320)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1253)
at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1139)
at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1068)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1462)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1433)
at com.example.lxcameraapi.service.HttpNotifyService.sendBoxCountResult(HttpNotifyService.java:60)
at com.example.lxcameraapi.service.AsyncProcessingService.processBoxCountAsync(AsyncProcessingService.java:117)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
2026-05-14 11:14:15.828 [task-20] ERROR [com.example.lxcameraapi.service.HttpNotifyService] - 发送HTTP请求失败: http://127.0.0.1:48080/admin-api/logistics/StockController/singleInventoryQrCodeReturn
java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:278)
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:304)
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346)
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796)
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:291)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:347)
at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:399)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:827)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:759)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1706)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:531)
at com.example.lxcameraapi.service.HttpNotifyService.sendQrCodeResult(HttpNotifyService.java:134)
at com.example.lxcameraapi.service.AsyncProcessingService.processQrCodeAsync(AsyncProcessingService.java:178)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)

File diff suppressed because it is too large Load Diff

@ -9,6 +9,7 @@ import com.example.lxcameraapi.service.IndustrialCamera.algorithm.ONNXServiceNew
import com.example.lxcameraapi.service.IndustrialCamera.camera.hik.ImageCaptureService; import com.example.lxcameraapi.service.IndustrialCamera.camera.hik.ImageCaptureService;
import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.BoxCountRequest; import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.BoxCountRequest;
import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.BoxCountResponse; import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.BoxCountResponse;
import com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config.MultiImageRequest;
import com.example.lxcameraapi.service.IndustrialCamera.opencv.OpencvService; import com.example.lxcameraapi.service.IndustrialCamera.opencv.OpencvService;
import com.example.lxcameraapi.service.IndustrialCamera.yolo.BoundingBox; import com.example.lxcameraapi.service.IndustrialCamera.yolo.BoundingBox;
import com.google.zxing.*; import com.google.zxing.*;
@ -143,7 +144,7 @@ public class QtCodeController {
/** /**
* - HTTP * - HTTP
*/ */
@PostMapping("/async") @PostMapping("/async/one")
public BoxCountResponse captureSingleAsync(@RequestBody BoxCountRequest request, public BoxCountResponse captureSingleAsync(@RequestBody BoxCountRequest request,
HttpServletRequest httpRequest) { HttpServletRequest httpRequest) {
@ -204,6 +205,100 @@ public class QtCodeController {
return boxCountResponse; return boxCountResponse;
} }
/**
* - HTTP
*
*/
@PostMapping("/async")
public BoxCountResponse captureMultiAsync(@RequestBody MultiImageRequest request,
HttpServletRequest httpRequest) {
BoxCountResponse boxCountResponse = new BoxCountResponse();
// 获取当前日期格式为 yyyy-MM-dd
LocalDateTime currentDate = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = currentDate.format(formatter);
// 获取相机IP
String ip = null;
for (AppConfig.Camera camera : appConfig.getHikCamera()) {
if (camera.getId().equals(request.getCameraId())) {
ip = camera.getIp();
break;
}
}
if (ip == null) {
boxCountResponse.setResult("CameraNotFound");
boxCountResponse.setSuccess(false);
return boxCountResponse;
}
int count = request.getCount() != null ? request.getCount() : 1;
int intervalMs = request.getIntervalMs() != null ? request.getIntervalMs() : 500;
// 拍照并收集路径
List<String> imagePaths = new ArrayList<>();
List<String> imageUrls = new ArrayList<>();
try {
for (int i = 0; i < count; i++) {
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss-SSS");
String formattedTime = currentDate.format(timeFormatter) + "_" + i;
String path = appConfig.getPicPath() + formattedDate + "/" + request.getCameraId() + "/" + formattedTime + ".png";
String url = appConfig.getPicUrl() + formattedDate + "/" + request.getCameraId() + "/" + formattedTime + ".png";
log.info("开始拍照第{}/{}IP: {}, 路径: {}", i + 1, count, ip, path);
boolean success = imageCaptureService.captureImage(ip, path);
if (success) {
imagePaths.add(path);
imageUrls.add(url);
} else {
log.warn("第{}张拍照失败", i + 1);
}
// 拍照间隔
if (i < count - 1 && intervalMs > 0) {
Thread.sleep(intervalMs);
}
}
} catch (Exception e) {
log.error("多图片拍照异常", e);
boxCountResponse.setResult("Error");
boxCountResponse.setSuccess(false);
return boxCountResponse;
}
if (imagePaths.isEmpty()) {
boxCountResponse.setResult("CaptureFailed");
boxCountResponse.setSuccess(false);
return boxCountResponse;
}
// 立即返回图片路径列表
boxCountResponse.setSuccess(true);
boxCountResponse.setResult("Processing");
boxCountResponse.setImagePath(imageUrls.get(0));
boxCountResponse.setTaskId(request.getTaskId());
boxCountResponse.setScanType(request.getScanType());
boxCountResponse.setQrCodeResults(imageUrls);
// 获取目标服务器信息
String targetIp = appConfig.getServe().getIp();
Integer targetPort = appConfig.getServe().getPort();
String targetPath = appConfig.getServe().getSingleInventoryQrCodeReturnPath();
// 异步执行多图片识别和HTTP发送
asyncProcessingService.processMultiQrCodeAsync(request.getCameraId(), request.getTaskId(),
imagePaths, imageUrls, targetIp, targetPort, targetPath, request.getScanType());
return boxCountResponse;
}
/** /**
* IP * IP
*/ */

@ -136,6 +136,7 @@ public class AsyncProcessingService {
} }
} }
/** /**
* *
*/ */
@ -210,6 +211,103 @@ public class AsyncProcessingService {
} }
} }
/**
*
*
*/
@Async
public void processMultiQrCodeAsync(Integer cameraId, String taskId, List<String> imagePaths,
List<String> imageUrls, String targetIp, Integer targetPort,
String targetPath, String scanType) {
try {
log.info("异步多图片识别任务开始,图片数量: {}", imagePaths.size());
// 收集所有图片的二维码结果
List<String> allQrCodeResults = new ArrayList<>();
List<String> allImagePaths = new ArrayList<>();
for (int i = 0; i < imagePaths.size(); i++) {
String path = imagePaths.get(i);
String url = imageUrls.get(i);
try {
log.info("开始识别第{}/{}张图片: {}", i + 1, imagePaths.size(), path);
List<BoundingBox> detectResults = onnxServiceNew.detect26(path, "qrCode");
log.info("第{}张图片检测结果: {}", i + 1, detectResults);
// 读取原始图片
BufferedImage originalImage = ImageIO.read(new File(path));
if (originalImage == null) {
log.warn("无法读取图片: {}", path);
continue;
}
List<String> qrCodeResults = new ArrayList<>();
List<BoundingBox> validBoxes = new ArrayList<>();
for (int j = 0; j < detectResults.size(); j++) {
BoundingBox box = detectResults.get(j);
try {
BufferedImage croppedImage = cropBoundingBox(originalImage, box, 30);
// 最小尺寸放大
int minSize = 320;
if (croppedImage.getWidth() < minSize || croppedImage.getHeight() < minSize) {
int newWidth = Math.max(croppedImage.getWidth(), minSize);
int newHeight = Math.max(croppedImage.getHeight(), minSize);
croppedImage = resizeImage(croppedImage, newWidth, newHeight);
}
// 解码
String qrCodeContent = decodeQrCodeWithRetry(croppedImage, box.getConfidence(), 2);
if (qrCodeContent != null) {
qrCodeResults.add(qrCodeContent);
validBoxes.add(box);
} else {
ImageIO.write(croppedImage, "jpg", new File(path + "_" + j + ".jpg"));
}
} catch (Exception e) {
log.error("第{}张图片解码异常box: {}", i + 1, box, e);
}
}
// 绘制检测框
opencvService.drawBoundingBoxesOnImage(validBoxes, path, path + ".jpg");
// 收集结果
allQrCodeResults.addAll(qrCodeResults);
allImagePaths.add(url + ".jpg");
} catch (Exception e) {
log.error("第{}张图片处理异常: {}", i + 1, path, e);
}
}
log.info("多图片识别完成,总二维码数量: {}", allQrCodeResults.size());
// 构建结果
String result = "Unknown";
if (!allQrCodeResults.isEmpty() && allQrCodeResults.get(0).length() >= 8) {
result = allQrCodeResults.get(0).substring(0, 8);
} else if (!allQrCodeResults.isEmpty()) {
result = allQrCodeResults.get(0);
}
// 发送HTTP通知
if (targetIp != null && targetPort != null && targetPath != null) {
httpNotifyService.sendQrCodeResult(targetIp, targetPort, targetPath,
taskId, result, String.join(",", allImagePaths), allQrCodeResults, scanType);
} else {
log.warn("多图片异步任务完成,但未配置目标服务器信息");
}
} catch (Exception e) {
log.error("多图片异步任务执行异常", e);
}
}
public static void main(String[] args) { public static void main(String[] args) {
String path = "D:\\data\\media\\2026-05-15\\1\\2026-05-15-00-07-20-909.png_3.jpg"; String path = "D:\\data\\media\\2026-05-15\\1\\2026-05-15-00-07-20-909.png_3.jpg";
BufferedImage croppedImage = null; BufferedImage croppedImage = null;

@ -0,0 +1,34 @@
package com.example.lxcameraapi.service.IndustrialCamera.camera.lx.config;
import lombok.Data;
/**
*
*/
@Data
public class MultiImageRequest {
/**
* ID
*/
private Integer cameraId;
/**
* ID
*/
private String taskId;
/**
*
*/
private String scanType;
/**
* 1
*/
private Integer count = 1;
/**
* (ms)500
*/
private Integer intervalMs = 500;
}
Loading…
Cancel
Save