From 047ced202f052d70c50f4365b2d86810de076489 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 15 May 2024 17:57:49 +0800
Subject: [PATCH] E呼即办2

---
 src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java |   76 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java b/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
index 8c5dd64..3298b5a 100644
--- a/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
+++ b/src/main/java/org/springblade/es/service/ElasticsearchDocumentService.java
@@ -1,5 +1,6 @@
 package org.springblade.es.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.logging.log4j.util.Strings;
 import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
@@ -21,12 +22,14 @@
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.SearchHits;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.springblade.common.cache.SysCache;
 import org.springblade.common.constant.EsTableConstant;
 import org.springblade.common.param.CommonParamSet;
 import org.springblade.common.utils.SpringUtils;
 import org.springblade.es.vo.EsParam;
 import org.springblade.modules.article.entity.Article;
 import org.springblade.modules.article.service.ArticleService;
+import org.springblade.modules.grid.service.IGridRangeService;
 import org.springblade.modules.house.entity.HouseEntity;
 import org.springblade.modules.house.entity.HouseholdEntity;
 import org.springblade.modules.house.service.IHouseService;
@@ -66,6 +69,9 @@
 	@Autowired
 	private IHouseholdService householdService;
 
+	@Autowired
+	private IGridRangeService gridRangeService;
+
 	@Value("${elasticsearch.sync}")
 	private boolean elasticsearchSync;
 
@@ -96,14 +102,24 @@
 	 * @return
 	 */
 	public boolean init(EsParam esParam) {
-		// 场所
-		initPlace(esParam);
-		// 通知文章
-		initArticle(esParam);
-		// 房屋
-		initHouse(esParam);
-		// 住户
-		initHousehold(esParam);
+		if (!Strings.isBlank(esParam.getTableName())) {
+			if (esParam.getTableName().equals("jczz_place")) {
+				// 场所
+				initPlace(esParam);
+			}
+			if (esParam.getTableName().equals("jczz_article")) {
+				// 通知文章
+				initArticle(esParam);
+			}
+			if (esParam.getTableName().equals("jczz_house")) {
+				// 房屋
+				initHouse(esParam);
+			}
+			if (esParam.getTableName().equals("jczz_household")) {
+				// 住户
+				initHousehold(esParam);
+			}
+		}
 		// 返回
 		return true;
 	}
@@ -180,12 +196,17 @@
 				for (Article article : articleList) {
 					// 初始化Elasticsearch客户端
 					IndexRequest indexRequest = new IndexRequest(esParam.getIndexName());
+					String communityNameListString
+						= SysCache.getAllCommunityNameListString(article.getArticleRange(),article.getId().toString());
+					Map<String, Object> map = new HashMap<>(1);
+					map.put("communityCode",communityNameListString);
+					String toString = new JSONObject(map).toString();
 					// 不设置id
 					// indexRequest.id("1");
 					indexRequest.source("tableId", article.getId().toString(),
 						"tableName", "jczz_article",
 						"title", article.getTitle(),
-						"communityCode", article.getArticleRange(),
+						"communityCode", toString,
 						"type", null != article.getType() ? article.getType().toString() : "",
 						"content", article.getContent(),
 						"articleType", article.getArticleType());
@@ -319,12 +340,17 @@
 	@Async
 	public void addArticle(EsParam esParam, Article article) {
 		if (elasticsearchSync) {
+			// 查询当前文章范围对应的社区名称字符串集合
+			String communityNameListString = SysCache.getAllCommunityNameListString(article.getArticleRange(),article.getId().toString());
+			Map<String, Object> map = new HashMap<>(1);
+			map.put("communityCode",communityNameListString);
+			String toString = new JSONObject(map).toString();
 			try {
 				indexDocument(esParam.getIndexName(),
 					"tableId", article.getId().toString(),
 					"tableName", "jczz_article",
 					"title", article.getTitle(),
-					"communityCode", article.getArticleRange(),
+					"communityCode", toString,
 					"type", null != article.getType() ? article.getType().toString() : "",
 					"content", article.getContent(),
 					"articleType", article.getArticleType()
@@ -464,18 +490,24 @@
 			BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
 //			boolQueryBuilder.should(QueryBuilders.matchQuery("content", esParam.getSearchKey()));
 //			boolQueryBuilder.should(QueryBuilders.matchQuery("name", esParam.getSearchKey()));
-			boolQueryBuilder.must(QueryBuilders.matchQuery("title", esParam.getSearchKey()));
+			boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("title", esParam.getSearchKey()));
 //			boolQueryBuilder.should(QueryBuilders.matchQuery("location", esParam.getSearchKey()));
 //			boolQueryBuilder.should(QueryBuilders.matchQuery("phone", esParam.getSearchKey()));
 //			boolQueryBuilder.should(QueryBuilders.matchQuery("idCard", esParam.getSearchKey()));
 			if (!Strings.isBlank(esParam.getTableName())) {
 				boolQueryBuilder.must(QueryBuilders.matchQuery("tableName", esParam.getTableName()));
 			}
+			String roleName = SpringUtils.getRequestParam("roleName");
 			String communityCode = SpringUtils.getRequestParam("communityCode");
 			if (!Strings.isBlank(communityCode)) {
-				boolQueryBuilder.must(QueryBuilders.matchQuery("communityCode", communityCode));
+				if (!Strings.isBlank(roleName) && roleName.equals("inhabitant") && !Strings.isBlank(esParam.getHouseCode())){
+					// 居民根据房屋对应的小区过滤
+					boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("communityCode",gridRangeService.getDistrictIdByHouseCode(esParam.getHouseCode())));
+				}else {
+					// 设置查询社区名称,编号有多个,数字类型目前无法匹配到
+					boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("communityCode", communityCode));
+				}
 			}
-			String roleName = SpringUtils.getRequestParam("roleName");
 			if (!Strings.isBlank(roleName)){
 				if (roleName.equals("wgy") || roleName.equals("mj")){
 					// 不查公告
@@ -636,12 +668,17 @@
 	 * @param data
 	 */
 	private void setArticleMap(Article item, Map<String, Object> data) {
+		// 查询当前文章范围对应的社区名称字符串集合
+		String communityNameListString = SysCache.getAllCommunityNameListString(item.getArticleRange(),item.getId().toString());
+		Map<String, Object> map = new HashMap<>(1);
+		map.put("communityCode",communityNameListString);
+		String toString = new JSONObject(map).toString();
 		data.put("tableId",item.getId());
 		data.put("title",item.getTitle());
 		data.put("type",item.getType());
 		data.put("content",item.getContent());
 		data.put("articleType",item.getArticleType());
-		data.put("communityCode",item.getArticleRange());
+		data.put("communityCode",toString);
 	}
 	/**
 	 * 设置场所map
@@ -690,9 +727,14 @@
 			DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(esParam.getIndexName());
 			// 根据多个条件 生成 boolQueryBuilder
 			BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-			boolQueryBuilder
-				.must(QueryBuilders.matchQuery("tableId", esParam.getTableId()))
-				.must(QueryBuilders.matchQuery("tableName", esParam.getTableName()));
+			if (!Strings.isBlank(esParam.getTableId())){
+				boolQueryBuilder
+					.must(QueryBuilders.matchQuery("tableId", esParam.getTableId()));
+			}
+			if (!Strings.isBlank(esParam.getTableName())) {
+				boolQueryBuilder
+					.must(QueryBuilders.matchQuery("tableName", esParam.getTableName()));
+			}
 			deleteByQueryRequest.setQuery(boolQueryBuilder);
 			try {
 				BulkByScrollResponse bulkResponse =

--
Gitblit v1.9.3