From 927359fdce884acdcd76b90008eb0303f4bdd29d Mon Sep 17 00:00:00 2001 From: 许鹏程 <1821349743@qq.com> Date: 星期二, 28 五月 2024 16:09:04 +0800 Subject: [PATCH] commit --- src/main/java/com/product/file/util/CreateDocumentIndexThread.java | 87 ++++++++++++++++++++++++++++++++----------- 1 files changed, 64 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/product/file/util/CreateDocumentIndexThread.java b/src/main/java/com/product/file/util/CreateDocumentIndexThread.java index c1f6c7a..175e729 100644 --- a/src/main/java/com/product/file/util/CreateDocumentIndexThread.java +++ b/src/main/java/com/product/file/util/CreateDocumentIndexThread.java @@ -1,6 +1,10 @@ package com.product.file.util; -import java.util.LinkedList; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Set; + +import org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -13,22 +17,28 @@ /** * 娑堟伅鏈嶅姟锛屾坊鍔犳秷鎭紝璇诲彇娑堟伅 - * @author shicf * + * @author shicf */ @Component -public class CreateDocumentIndexThread { - /**鑷凡瀹炰緥**/ +public class CreateDocumentIndexThread { + /** + * 鑷凡瀹炰緥 + **/ private static CreateDocumentIndexThread createDocumentIndexThread; @Autowired public FileManagerService fileManagerService; - /**鍐呴儴绾跨▼**/ - private SendMailThread sendMailThread=null; + /** + * 鍐呴儴绾跨▼ + **/ + private SendMailThread sendMailThread = null; @Autowired public LuceneService luceneService; - /** 鐢熸垚鐨勬柊娑堟伅闃熷垪**/ - private static LinkedList <FieldSetEntity> documentIndexs=new LinkedList<>(); - + /** + * 鐢熸垚鐨勬柊娑堟伅闃熷垪 + **/ + private static LinkedList<FieldSetEntity> documentIndexs = new LinkedList<>(); + /** * 闈欐�佸伐鍘傛柟娉� 鑾峰彇褰撳墠瀵硅薄瀹炰緥 澶氱嚎绋嬪畨鍏ㄥ崟渚嬫ā寮�(浣跨敤鍙岄噸鍚屾閿�) */ @@ -37,57 +47,88 @@ if (createDocumentIndexThread == null) { synchronized (CreateDocumentIndexThread.class) { if (createDocumentIndexThread == null) { - createDocumentIndexThread=(CreateDocumentIndexThread) SpringBeanUtil.getBean("createDocumentIndexThread"); + createDocumentIndexThread = (CreateDocumentIndexThread) SpringBeanUtil.getBean("createDocumentIndexThread"); } } } createDocumentIndexThread.start(); return createDocumentIndexThread; } + /** * 鍚姩缂撳瓨鐨勫埛鏂扮嚎绋� */ - public void start() { - if(sendMailThread ==null || sendMailThread.getState()== Thread.State.TERMINATED ) { - sendMailThread=new SendMailThread(); + public void start() { + if (sendMailThread == null || sendMailThread.getState() == Thread.State.TERMINATED) { + sendMailThread = new SendMailThread(); sendMailThread.start(); SpringMVCContextHolder.getSystemLogger().info("Thread Of Refresh Cache Is Starting............."); } } + /** * 鎶婇檮浠朵俊鎭坊鍔犲鍒椾腑 + * * @param user */ public synchronized void appendAttaInfo(FieldSetEntity documentIndex) { - if(documentIndex!=null) { + if (documentIndex != null) { documentIndexs.add(documentIndex); } } + + //閲嶈瘯鏂囦欢鐨剈uid闆嗗悎 + private Set<String> retryFileUuids = new HashSet<>(); + /** * 鍙栧埛鏂拌〃闃熻〃鐨勭涓�涓� + * * @return */ public synchronized void pop() { - while(!documentIndexs.isEmpty()) { - FieldSetEntity ff=documentIndexs.pop(); - if(luceneService ==null ) { - luceneService=(LuceneService) SpringBeanUtil.getBean("luceneService"); + while (!documentIndexs.isEmpty()) { + FieldSetEntity ff = documentIndexs.pop(); + if (luceneService == null) { + luceneService = (LuceneService) SpringBeanUtil.getBean("luceneService"); } - ff.setValue("file", fileManagerService.getFile(ff.getString("attachment_uuid"))); - luceneService.createdIndex(ff); + try { + ff.setValue("file", fileManagerService.getFile(ff.getString("attachment_uuid"))); + } catch (Exception e) { + if (retryFileUuids.contains(ff.getString("attachment_uuid"))) { + //閲嶈瘯杩囩殑鏂囦欢涓嶅啀閲嶈瘯,鍒犻櫎闃熷垪涓殑鏂囦欢 + retryFileUuids.remove(ff.getString("attachment_uuid")); + continue; + } else { + retryFileUuids.add(ff.getString("attachment_uuid")); + //娣诲姞鍒伴槦鍒楃殑鏈�鍚� + appendAttaInfo(ff); + continue; + } + } + try { + + luceneService.createdIndex(ff); + } catch (OLE2NotOfficeXmlFileException e) { + e.printStackTrace(); + SpringMVCContextHolder.getSystemLogger().error(e); + } catch (Exception e) { + SpringMVCContextHolder.getSystemLogger().error(e); + e.printStackTrace(); + } } } + /** * 鍐呴儴绾跨▼锛屽畾鏃跺埛鏂扮紦瀛� - * @author shicf * + * @author shicf */ - class SendMailThread extends Thread { + class SendMailThread extends Thread { @Override public void run() { try { - while(true) { + while (true) { sleep(2000);// 鎵ц闂撮殧2s pop(); } -- Gitblit v1.9.2