| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | private IHouseholdService householdService; |
| | | |
| | | @Autowired |
| | | private IGridRangeService gridRangeService; |
| | | |
| | | @Value("${elasticsearch.sync}") |
| | | private boolean elasticsearchSync; |
| | |
| | | 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()); |
| | |
| | | @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() |
| | |
| | | BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); |
| | | // boolQueryBuilder.should(QueryBuilders.matchQuery("content", esParam.getSearchKey())); |
| | | // boolQueryBuilder.should(QueryBuilders.matchQuery("name", esParam.getSearchKey())); |
| | | boolQueryBuilder.should(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")){ |
| | | // 不查公告 |
| | |
| | | * @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 |
| | |
| | | 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 = |