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;