Browse Source

增加维护问题索引(器件、类目、品牌)的接口

sunyj 9 years ago
parent
commit
a709151a9e

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

@@ -54,4 +54,10 @@ public class IndexController {
 		return "created " + indexService.createOrderAndPurchaseIndexes();
 	}
 
+	@RequestMapping("/maintain")
+	@ResponseBody
+	public String maintainIndexes(String tableName, String ids) {
+		return indexService.maintainIndexes(tableName, ids);
+	}
+
 }

+ 14 - 0
search-console/src/main/java/com/uas/search/console/dao/BrandSimpleInfoDao.java

@@ -1,7 +1,11 @@
 package com.uas.search.console.dao;
 
+import java.util.List;
+
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import com.uas.search.console.model.BrandSimpleInfo;
@@ -21,4 +25,14 @@ public interface BrandSimpleInfoDao
 	 * @return
 	 */
 	public BrandSimpleInfo findById(Long id);
+
+	/**
+	 * 按id数组获取品牌
+	 * 
+	 * @param ids
+	 *            id数组
+	 * @return
+	 */
+	@Query("select b from BrandSimpleInfo b where b.id in (:ids)")
+	public List<BrandSimpleInfo> findByIds(@Param("ids") Long[] ids);
 }

+ 10 - 0
search-console/src/main/java/com/uas/search/console/dao/ComponentSimpleInfoDao.java

@@ -50,4 +50,14 @@ public interface ComponentSimpleInfoDao
 	 */
 	@Query("select c from ComponentSimpleInfo c where c.id in (:ids) order by instr(':ids', c.id)")
 	public List<ComponentSimpleInfo> findByIdsInOrder(@Param("ids") Long[] ids);
+
+	/**
+	 * 按id数组获取器件
+	 * 
+	 * @param ids
+	 *            id数组
+	 * @return
+	 */
+	@Query("select c from ComponentSimpleInfo c where c.id in (:ids)")
+	public List<ComponentSimpleInfo> findByIds(@Param("ids") Long[] ids);
 }

+ 14 - 0
search-console/src/main/java/com/uas/search/console/dao/KindSimpleInfoDao.java

@@ -1,7 +1,11 @@
 package com.uas.search.console.dao;
 
+import java.util.List;
+
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import com.uas.search.console.model.KindSimpleInfo;
@@ -21,4 +25,14 @@ public interface KindSimpleInfoDao
 	 * @return
 	 */
 	public KindSimpleInfo findById(Long id);
+
+	/**
+	 * 按id数组获取类目
+	 * 
+	 * @param ids
+	 *            id数组
+	 * @return
+	 */
+	@Query("select k from KindSimpleInfo k where k.id in (:ids)")
+	public List<KindSimpleInfo> findByIds(@Param("ids") Long[] ids);
 }

+ 11 - 0
search-console/src/main/java/com/uas/search/console/service/IndexService.java

@@ -45,4 +45,15 @@ public interface IndexService {
 	 * @return 消耗的时间ms
 	 */
 	public Long createOrderAndPurchaseIndexes();
+
+	/**
+	 * 用于维护出问题的索引
+	 * 
+	 * @param tableName
+	 *            需维护的表名
+	 * @param ids
+	 *            需维护的id,多个id以英文逗号隔开,如:321,988
+	 * @return 维护的结果
+	 */
+	public String maintainIndexes(String tableName, String ids);
 }

+ 40 - 0
search-console/src/main/java/com/uas/search/console/service/impl/IndexServiceImpl.java

@@ -6,6 +6,7 @@ import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.nio.file.Paths;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -55,6 +56,7 @@ import com.uas.search.console.support.IndexWriterManager;
 import com.uas.search.console.util.MergeComponentData;
 import com.uas.search.console.util.ObjectToDocumentUtils;
 import com.uas.search.console.util.SearchConstants;
+import com.uas.search.exception.SearchException;
 
 /**
  * 创建索引
@@ -676,4 +678,42 @@ public class IndexServiceImpl implements IndexService {
 		logger.info("Deleted... " + obj + "\n");
 	}
 
+	@Override
+	public String maintainIndexes(String tableName, String ids) {
+		if (StringUtils.isEmpty(tableName)) {
+			throw new SearchException("需指定要维护的表名:" + SearchConstants.KIND_TABLE_NAME + "、"
+					+ SearchConstants.BRAND_TABLE_NAME + "、" + SearchConstants.COMPONENT_TABLE_NAME);
+		}
+		if (StringUtils.isEmpty(ids)) {
+			throw new SearchException("需指定要维护的ids,多个id以英文逗号隔开,如:321,988");
+		}
+
+		String[] strs = ids.split(",");
+		Long[] longIds = new Long[strs.length];
+		for (int i = 0; i < strs.length; i++) {
+			longIds[i] = Long.parseLong(strs[i]);
+		}
+		logger.info(Arrays.toString(longIds));
+		if (tableName.equals(SearchConstants.KIND_TABLE_NAME)) {
+			List<KindSimpleInfo> kinds = kindDao.findByIds(longIds);
+			for (KindSimpleInfo kind : kinds) {
+				update(kind);
+			}
+		} else if (tableName.equals(SearchConstants.BRAND_TABLE_NAME)) {
+			List<BrandSimpleInfo> brands = brandDao.findByIds(longIds);
+			for (BrandSimpleInfo brand : brands) {
+				update(brand);
+			}
+		} else if (tableName.equals(SearchConstants.COMPONENT_TABLE_NAME)) {
+			List<ComponentSimpleInfo> components = componentDao.findByIds(longIds);
+			logger.info(components);
+			for (ComponentSimpleInfo component : components) {
+				update(component);
+			}
+		} else {
+			throw new SearchException("需指定要维护的ids,多个id以英文逗号隔开,如:321,988");
+		}
+		return "维护成功";
+	}
+
 }