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