zqy
5 天以前 b02beccf4567068cb47a3f1181a00039456c872d
zhang-content/src/main/java/com/ruoyi/service/impl/EsServiceImpl.java
@@ -1,9 +1,13 @@
package com.ruoyi.service.impl;
import com.ruoyi.common.core.domain.entity.EsModel;
import com.ruoyi.domain.ZAuthority;
import com.ruoyi.domain.ZInfoUser;
import com.ruoyi.mapper.EsRepository;
import com.ruoyi.service.EsService;
import com.ruoyi.service.ZAuthorityService;
import com.ruoyi.service.ZInfoUserService;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
@@ -22,6 +26,9 @@
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.ruoyi.constant.MenuAuthority.EQUIPMENT_LIST;
@Service
public class EsServiceImpl implements EsService {
@@ -29,6 +36,13 @@
    private EsRepository esRepository;
    @Resource
    private ElasticsearchRestTemplate elasticsearchRestTemplate;
    @Resource
    private ZInfoUserService zInfoUserService;
    @Resource
    private ZAuthorityService zAuthorityService;
    @Override
    public int insertTable(EsModel esModel) {
        try {
@@ -49,6 +63,18 @@
        //多字段进行匹配
//        MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(con, "ctName", "ctContent","remark",
//                "by1","by2","by3","by4");
        //要查自己家庭的
        ZInfoUser myself = zInfoUserService.getMyself();
        Long familyId = myself.getFamilyId();
        //也要查别人授权的
        List<ZAuthority> authority = zAuthorityService.getAuthority();
        List<Long> idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(EQUIPMENT_LIST)).map(ZAuthority::getFid).collect(Collectors.toList());
        //加上自己家庭的id
        idList.add(familyId);
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        boolQueryBuilder.should(QueryBuilders.matchQuery("ctName",con));
        boolQueryBuilder.should(QueryBuilders.matchQuery("ctContent",con));
@@ -59,6 +85,7 @@
        boolQueryBuilder.should(QueryBuilders.matchQuery("by4",con));
        boolQueryBuilder.should(QueryBuilders.matchQuery("by6",con));
        boolQueryBuilder.should(QueryBuilders.matchQuery("by7",con));
        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder()
                .withQuery(boolQueryBuilder);
@@ -73,7 +100,9 @@
        });
       // articleList.forEach(a-> System.out.println(a))
        return esm;
        return esm.stream().filter(esModel -> {
            return idList.contains(esModel.getFid());
        }).collect(Collectors.toList());
    }
@@ -92,7 +121,11 @@
                .withQuery(boolQueryBuilder);
        NativeSearchQuery nativeSearchQuery = nativeSearchQueryBuilder.build();
        return Objects.requireNonNull(elasticsearchRestTemplate.searchOne(nativeSearchQuery, EsModel.class)).getContent();
        SearchHit<EsModel> esModelSearchHit = elasticsearchRestTemplate.searchOne(nativeSearchQuery, EsModel.class);
        if(esModelSearchHit != null){
            return esModelSearchHit.getContent();
        }
        return null;
    }