From 4b1d62ac7e9f3d69abbb079db30d9be5214e5f17 Mon Sep 17 00:00:00 2001 From: shuliYao <1397940314@qq.com> Date: Mon, 8 Apr 2024 10:15:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8B=89=E5=8F=96=E6=97=A0=E9=87=8F?= =?UTF-8?q?=E4=BA=912.0=E6=95=B0=E6=8D=AE=E4=B8=8B=E8=BD=BD=EF=BC=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=A2=E5=A4=B1=E7=AD=89=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ocr/service/OcrPictureService.java | 2 + .../impl/OcrCheckDuplicateServiceImpl.java | 2 + .../service/impl/OcrPictureServiceImpl.java | 103 ++++++++++++++---- .../xiaoyao/ocr/thread/TaskThreadPool.java | 17 ++- .../thread/tasks/PictureImgToLocalTask.java | 4 + .../xiaoyao/ocr/util/DownloadImgUtil.java | 8 +- 6 files changed, 110 insertions(+), 26 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java index f6803232..aad2f72e 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/OcrPictureService.java @@ -61,6 +61,8 @@ public interface OcrPictureService extends BaseService { */ int savePictures(List ocrPictureList); + void savePicturesInfo(OcrPicture ocrPicture); + ResultVo createPackageTask(List pageList, String tenantId, UserToken userToken, String searchMonth, HttpServletRequest req, String buessinessno, Map paramMap); Map getOcrPictureClassifyAndHash(String img); diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java index c6dec878..27061db9 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/service/impl/OcrCheckDuplicateServiceImpl.java @@ -106,6 +106,7 @@ public class OcrCheckDuplicateServiceImpl extends ServiceImpl ocrPictureList) { + public int savePictures(List ocrPictureList){ //1.字典数据 解析入库 boolean b = dataDictionaryUtil.pictureDataDictionarySaveArray(ocrPictureList); @@ -673,16 +676,26 @@ public class OcrPictureServiceImpl extends BaseServiceImpl list = new ArrayList<>(); for (OcrPicture ocrPicture : ocrPictureList) { if (StringUtils.isNotBlank(ocrPicture.getImgurl())) { - OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl()); + OcrPictureInfo imageInfo = getImageInfo(ocrPicture.getImgurl(),true); if (ObjectUtil.isNotEmpty(imageInfo)) { imageInfo.setPictureId(ocrPicture.getId()); imageInfo.setImgName(ocrPicture.getImgname()); @@ -701,18 +714,49 @@ public class OcrPictureServiceImpl extends BaseServiceImpl list) { for (OcrPicture ocrPicture : list) { PictureImgToLocalEntity entity = new PictureImgToLocalEntity(); @@ -764,7 +810,22 @@ public class OcrPictureServiceImpl extends BaseServiceImpl(), Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardOldestPolicy()); + + threadPoolImg = new ThreadPoolExecutor( + 10, + 40, + 3, + TimeUnit.SECONDS, + new LinkedBlockingDeque<>(), + Executors.defaultThreadFactory(), + new ThreadPoolExecutor.DiscardOldestPolicy()); } } @@ -45,8 +55,8 @@ public class TaskThreadPool { @SneakyThrows @Override public void run() { - logger.debug("无量云接口数据处理消费线程检测中..."); while (true) { + logger.debug("无量云接口数据处理消费线程检测中...,队列数量:{}",TaskQueue.pictureDisposeQueue.size()); PictureSourceResult pictureSourceResult = TaskQueue.pictureDisposePullData(); if (pictureSourceResult != null) { threadPool.execute(new PictureDisposeTask(pictureSourceResult)); @@ -71,13 +81,12 @@ public class TaskThreadPool { @SneakyThrows @Override public void run() { - logger.debug("图片下载消费线程检测中..."); - while (true) { + logger.debug("图片下载消费线程检测中...,队列数量:{}",TaskQueue.pictureImgToLocalQueue.size()); try { PictureImgToLocalEntity pictureImgToLocalEntity = TaskQueue.pictureImgToLocalPullData(); if (pictureImgToLocalEntity != null) { - threadPool.execute(new PictureImgToLocalTask(pictureImgToLocalEntity)); + threadPoolImg.execute(new PictureImgToLocalTask(pictureImgToLocalEntity)); } else { Thread.sleep(5000); } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java index 6be700d6..98a71755 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/thread/tasks/PictureImgToLocalTask.java @@ -80,6 +80,10 @@ public class PictureImgToLocalTask implements Runnable { // picture.setPhotoDateTimestamp(timestamp); // } ocrPictureService.updateById(picture); + logger.info("图片本地化,回写数据完成!"); + logger.info("开启获取图片信息操作!"); + ocrPictureService.savePicturesInfo(picture); + logger.info("获取图片信息操作,结束!"); } } } diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java index bd203e8e..f4db9494 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/xiaoyao/ocr/util/DownloadImgUtil.java @@ -5,6 +5,8 @@ import org.slf4j.LoggerFactory; import java.io.FileOutputStream; import java.io.InputStream; +import java.io.PrintWriter; +import java.io.StringWriter; import java.net.URL; /** @@ -33,7 +35,11 @@ public class DownloadImgUtil { out.write(buffer, 0, n); } } catch (Exception e) { - logger.error(e.getMessage()); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + String exceptionDetails = sw.toString(); // 包含堆栈跟踪信息的字符串 + logger.error("图片本地化,转储图片异常:",exceptionDetails); return false; } return true;