Просмотр исходного кода

从数据库下载器件数据时支持从第startFileIndex个文件开始下载

sunyj 9 лет назад
Родитель
Сommit
1a4dc8837a

+ 2 - 2
search-console/src/main/java/com/uas/search/console/controller/IndexController.java

@@ -47,8 +47,8 @@ public class IndexController {
 
 	@RequestMapping("/downloadComponentData")
 	@ResponseBody
-	public String downloadComponentDataFromDatabase() {
-		return "Data downloaded success in " + indexService.downloadComponentDataFromDatabase() + " ms.";
+	public String downloadComponentDataFromDatabase(Integer startFileIndex) {
+		return "Data downloaded success in " + indexService.downloadComponentDataFromDatabase(startFileIndex) + " ms.";
 	}
 
 	@RequestMapping("/listen/start")

+ 9 - 6
search-console/src/main/java/com/uas/search/console/service/IndexService.java

@@ -18,9 +18,9 @@ public interface IndexService {
 	 * 创建指定表的索引
 	 * 
 	 * @param tableNames
-	 *            指定的表,默认创建所有表的索引
+	 *            可为空,指定的表,默认创建所有表的索引
 	 * @param componentFromFiles
-	 *            器件索引数据是否来自文件,默认来自文件
+	 *            可为空,器件索引数据是否来自文件,默认来自文件
 	 * @return 创建的索引花费总时间 ms
 	 */
 	public Long createIndexes(List<String> tableNames, Boolean componentFromFiles);
@@ -28,9 +28,12 @@ public interface IndexService {
 	/**
 	 * 下载器件的数据至本地文件中,以供建索引用
 	 * 
+	 * @param startFileIndex
+	 *            可为空,从第startFileIndex个文件开始下载
+	 * 
 	 * @return 花费总时间 ms
 	 */
-	public Long downloadComponentDataFromDatabase();
+	public Long downloadComponentDataFromDatabase(Integer startFileIndex);
 
 	/**
 	 * 将新对象添加在lucene索引中
@@ -85,11 +88,11 @@ public interface IndexService {
 	 * 获取关于实时更新情况的详细信息
 	 * 
 	 * @param page
-	 *            页码
+	 *            可为空,页码
 	 * @param size
-	 *            页大小
+	 *            可为空,页大小
 	 * @param searchContent
-	 *            对消息内容进行搜索
+	 *            可为空,对消息内容进行搜索
 	 * @return 等待更新的数据的信息
 	 */
 	public SPage<LuceneQueueMessage> getListenDetails(Integer page, Integer size, String searchContent);

+ 18 - 5
search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java

@@ -105,9 +105,14 @@ public class IndexServiceImpl implements IndexService {
 	 */
 	private boolean creatingIndex = false;
 
+	/**
+	 * 从数据库获取数据时的分页大小
+	 */
 	private static final int PAGE_SIZE = 1000;
 
-	// 单个文件存储的最大数据数目
+	/**
+	 * 单个文件存储的最大数据数目,需是PAGE_SIZE的整数倍
+	 */
 	public static final int SINGLE_FILE_MAX_SIZE = 100000;
 
 	private static Logger logger = LoggerFactory.getLogger(IndexServiceImpl.class);
@@ -389,13 +394,22 @@ public class IndexServiceImpl implements IndexService {
 	}
 
 	@Override
-	public Long downloadComponentDataFromDatabase() {
+	public Long downloadComponentDataFromDatabase(Integer startFileIndex) {
+		int fileIndex = 1;
+		if (startFileIndex != null) {
+			if (startFileIndex < 1) {
+				throw new SearchException("startFileIndex需大于1");
+			} else {
+				fileIndex = startFileIndex;
+			}
+		}
+
 		Long startTime = new Date().getTime();
 		logger.info("下载器件... ");
 
 		// 分页获取数据
 		PageParams pageParams = new PageParams();
-		pageParams.setPage(1);
+		pageParams.setPage((fileIndex - 1) * SINGLE_FILE_MAX_SIZE / PAGE_SIZE + 1);
 		pageParams.setCount(PAGE_SIZE);
 		PageInfo pageInfo = new PageInfo(pageParams);
 		Page<ComponentSimpleInfo> pageResult = componentDao.findAll(pageInfo);
@@ -405,7 +419,6 @@ public class IndexServiceImpl implements IndexService {
 		logger.info("发现数据:" + totalElements + "条");
 		// 已翻页的数据数目
 		Long size = 0L;
-		int fileIndex = 1;
 		PrintWriter printWriter = null;
 		int count = 0;
 		try {
@@ -416,7 +429,7 @@ public class IndexServiceImpl implements IndexService {
 			printWriter = new PrintWriter(luceneProperties.getComponentsDir() + "/" + fileIndex + ".txt");
 			while (totalElements > size) {
 				// 一个文件存放100000条数据,一旦超过,写入新的文件
-				if (count > SINGLE_FILE_MAX_SIZE) {
+				if (count == SINGLE_FILE_MAX_SIZE) {
 					count = 1;
 					printWriter.flush();
 					printWriter.close();

+ 3 - 3
search-console/src/main/webapp/WEB-INF/views/console.html

@@ -55,7 +55,7 @@
 			<ol>
 				<strong><li class="title">搜索</li></strong>
 				<ol>
-					<li><a target="_blank">search/orderIds?tableName=ORDER&keyword=SS20161017000000&page=2&size=3&status=505&buyeruu1000002821=&buyerenuu=1000001&sellerenuu=10030994&mintime=2016-10-10
+					<li><a target="_blank">search/orderIds?tableName=ORDER&keyword=SS20161017000000&page=2&size=3&status=505&buyeruu=1000002821&buyerenuu=1000001&sellerenuu=10030994&mintime=2016-10-10
 							%201:12:20&maxtime=2016-10-30%201:12:20</a></li>
 					<li><a target="_blank">search/orderIds?tableName=ORDER_INVOICE&keyword=SDDFSS2016</a></li>
 					<li><a target="_blank">search/orderIds?tableName=PURCHASE&keyword=po</a></li>
@@ -73,10 +73,10 @@
 
 			<h2>3. 索引修改</h2>
 			<ol>
-				<li>index/create?tableNames=product$brand,trade$order&componentFromFiles=false</li>
+				<li>index/create?tableNames=product$kind,product$brand,product$component,trade$invoice_fmor,trade$order,trade$purchase,trade$invoice_fmpu&componentFromFiles=false</li>
 				<li><a target="_blank">index/create</a></li>
 				<li><a target="_blank">index/create?tableNames=product$brand,trade$order</a></li>
-				<li><a target="_blank">index/downloadComponentData</a></li>
+				<li><a target="_blank">index/downloadComponentData?startFileIndex=20</a></li>
 				<li><a target="_blank">index/listen/start?waitInterval=10</a></li>
 				<li><a target="_blank">index/listen/stop</a></li>
 				<li><a target="_blank">index/listen/restart</a></li>