Pārlūkot izejas kodu

20240902 修改标注库查询,查询专题库专利

lwhhszx 1 gadu atpakaļ
vecāks
revīzija
fcccd9997c

+ 35 - 2
src/main/java/cn/cslg/pas/service/business/AssoProjectPersonService.java

@@ -10,6 +10,7 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.ProjectPersonVO;
 import cn.cslg.pas.domain.business.AssoProductPerson;
 import cn.cslg.pas.domain.business.AssoProjectPerson;
+import cn.cslg.pas.domain.business.Project;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AssoProductPersonMapper;
 import cn.cslg.pas.mapper.AssoProjectPersonMapper;
@@ -20,6 +21,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -40,6 +42,10 @@ public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMappe
     private CacheUtils cacheUtils;
     @Autowired
     private LoginUtils loginUtils;
+    @Autowired
+    @Lazy
+    private ProjectService projectService;
+
     /**
      * 添加分享人
      *
@@ -47,7 +53,7 @@ public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMappe
      * @return
      */
     public List<Integer> addProjectShare(AddProjectPersonDTO addProjectPersonDTO) {
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
 
         List<Integer> reIds = new ArrayList<>();
         List<String> personIds = addProjectPersonDTO.getPersonIds();
@@ -56,7 +62,7 @@ public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMappe
         LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(AssoProjectPerson::getPersonId);
         queryWrapper.in(AssoProjectPerson::getPersonId, personIds)
-                .eq(AssoProjectPerson::getProjectId,projectId);
+                .eq(AssoProjectPerson::getProjectId, projectId);
         List<AssoProjectPerson> assoProjectPersonList = this.list(queryWrapper);
         List<String> ids = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
         if (ids != null) {
@@ -162,4 +168,31 @@ public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMappe
         }
         return projectPersonVOS;
     }
+
+
+    public List<Integer> getRootProjectIds() {
+
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String createId = personnelVO.getId();
+        List<Integer> ids = new ArrayList<>();
+        LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(Project::getId);
+        queryWrapper.eq(Project::getCreateId, createId)
+                .or().eq(Project::getHeadId, createId);
+        List<Project> projects =projectService.list(queryWrapper);
+
+        if(projects!=null&&projects.size()>0){
+            List<Integer> temIds =projects.stream().map(Project::getId).collect(Collectors.toList());
+            ids.addAll(temIds);
+        }
+        LambdaQueryWrapper<AssoProjectPerson> queryWrapper1 =new LambdaQueryWrapper<>();
+        queryWrapper1.select(AssoProjectPerson::getProjectId);
+        queryWrapper1.eq(AssoProjectPerson::getPersonId,createId);
+        List<AssoProjectPerson> assoProjectPersonList =this.list(queryWrapper1);
+        if(assoProjectPersonList!=null&&assoProjectPersonList.size()>0){
+            List<Integer> temIds =assoProjectPersonList.stream().map(AssoProjectPerson::getProjectId).collect(Collectors.toList());
+            ids.addAll(temIds);
+        }
+         return  ids;
+    }
 }

+ 8 - 5
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -363,10 +363,10 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
                 SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(importTaskVO.getFileGuid())).findFirst().orElse(null);
                 importTaskVO.setSystemFile(systemFile);
             }
-           if(importTaskVO.getImportContent()!=null){
-               String icn=this.getImportContentStr(importTaskVO.getImportContent(),importTaskVO.getType());
-               importTaskVO.setImportContentName(icn);
-           }
+            if (importTaskVO.getImportContent() != null) {
+                String icn = this.getImportContentStr(importTaskVO.getImportContent(), importTaskVO.getType());
+                importTaskVO.setImportContentName(icn);
+            }
 
         }
     }
@@ -575,8 +575,11 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         try {
             Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
             if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-                return;
+                if (resultMap == null) {
+                    importTask.setAllNum(-1);
+                }
             } else {
+
                 importTask.setAllNum((Integer) resultMap.get("total"));
             }
         } catch (Exception e) {

+ 2 - 0
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -593,6 +593,8 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                 assoProjectTreeNodeService.saveBatch(assoProjectTreeNodes);
             }
         }
+
+
         //TODO 若产品或产品类别技术类别有更新,则删除产品或产品类别技术类别和专利的标引(只需判断,删除部分,待es完成)
         //TODO 更新关联附件
         /**

+ 1 - 4
src/main/java/cn/cslg/pas/service/business/PatentService.java

@@ -33,15 +33,12 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> implements
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         Records records = new Records();
-        try {
             PatentDTO patentDTO = esService.esSearch(queryRequest);
             records.setCurrent(queryRequest.getCurrent());
             records.setSize(queryRequest.getSize());
             records.setData(patentDTO.getPatents());
             records.setTotal(patentDTO.getTotal());
-        } catch (Exception e){
-            e.printStackTrace();
-       }
+
         return records;
     }
 

+ 3 - 0
src/main/java/cn/cslg/pas/service/business/ProjectService.java

@@ -17,6 +17,7 @@ import cn.cslg.pas.service.business.es.EsService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -37,6 +38,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     @Autowired
     private LoginUtils loginUtils;
     @Autowired
+    @Lazy
     private AssoProjectPersonService assoProjectPersonService;
     @Autowired
     private EsPatentService esPatentService;
@@ -165,6 +167,7 @@ e.printStackTrace();
             });
         }
     }
+
 }
 
 

+ 27 - 6
src/main/java/cn/cslg/pas/service/business/es/EsScratchWordsService.java

@@ -18,15 +18,19 @@ import cn.cslg.pas.domain.business.ScratchWords;
 import cn.cslg.pas.domain.es.Marking;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.domain.es.PatentJoin;
+import cn.cslg.pas.exception.ExceptionEnum;
 import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.AssoProjectPersonService;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.FieldValue;
 import co.elastic.clients.elasticsearch._types.Time;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch._types.query_dsl.TermsQueryField;
 import co.elastic.clients.elasticsearch.core.*;
 import co.elastic.clients.elasticsearch.core.search.Hit;
 import co.elastic.clients.elasticsearch.nodes.Stats;
@@ -57,7 +61,8 @@ public class EsScratchWordsService {
     private LoginUtils loginUtils;
     @Autowired
     private FormatQueryService formatQueryService;
-
+    @Autowired
+    private AssoProjectPersonService assoProjectPersonService;
     //添加划词标注
     public String addScratchWords(ScratchWords scratchWords) {
         String patentNo = scratchWords.getPatentNo();
@@ -129,10 +134,7 @@ public class EsScratchWordsService {
     }
 
     public Query getSearchQuerys(StringRequest stringRequest) {
-//      PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        PersonnelVO personnelVO = new PersonnelVO();
-        personnelVO.setId("328");
-        personnelVO.setTenantId(1);
+      PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         String createId = personnelVO.getId();
         Integer tenantId = personnelVO.getTenantId();
         String searchCondition = stringRequest.getSearchQuery();
@@ -156,12 +158,31 @@ public class EsScratchWordsService {
             Query q6 = QueryBuilders.term(t -> t.field("public_scope").value(1));
             //数据库id
             Query q7 = null;
+            List<Integer> projectIds = assoProjectPersonService.getRootProjectIds();
+             if(projectIds.size()==0){
+                 projectIds.add(-1);
+             }
             if (projectId != null) {
-                q7 = QueryBuilders.term(t -> t.field("public_project_id").value(projectId));
+           if(!projectIds.contains(-1)||!projectIds.contains(projectId))
+           {
+               throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"无权限查看该专题库标注");
+           }
+               q7 = QueryBuilders.term(t -> t.field("public_project_id").value(projectId));
+            }
+            else {
+                List<FieldValue> fieldValues = new ArrayList<>();
+
+                projectIds.forEach(item -> {
+                    fieldValues.add(FieldValue.of(item));
+                });
+                q7 = QueryBuilders.terms(t -> t.field("public_project_id").terms(new TermsQueryField.Builder().value(fieldValues).build()));
+
             }
 
+
             //公开并且全部范围
             Query bool1 = QueryBuilders.bool(i -> i.must(q1, q5, q4));
+
             // 公开并且所在地
             List<Query> bool2Querys = new ArrayList<>();
             bool2Querys.add(q1);

+ 19 - 1
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -17,7 +17,9 @@ import cn.cslg.pas.common.vo.es.EsCustomFieldBatchVO;
 import cn.cslg.pas.common.vo.es.EsPatentCommonVO;
 import cn.cslg.pas.common.vo.es.PatentFamilyMessageWithId;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.exception.ExceptionEnum;
 import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.business.AssoProjectPersonService;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.importPatent.WebVOTransformService;
@@ -67,7 +69,8 @@ public class EsService {
     private EsCountService esCountService;
     @Autowired
     private EsCustomFieldService esCustomFieldService;
-
+   @Autowired
+   private AssoProjectPersonService assoProjectPersonService;
     /**
      * @param patent
      * @throws Exception
@@ -136,6 +139,7 @@ public class EsService {
      * @return
      */
     public PatentDTO esSearch(QueryRequest queryRequest) throws Exception {
+        this.judgeQueryPatentRoot(queryRequest);
         PatentDTO dto = new PatentDTO();
         Integer taskId = queryRequest.getTaskId();
         String searchCondition = "";
@@ -1475,6 +1479,20 @@ public class EsService {
         }
         return commonVO;
     }
+
+
+    public void judgeQueryPatentRoot(QueryRequest queryRequest){
+
+        Integer projectId = queryRequest.getProjectId();
+        Integer productId = queryRequest.getProductId();
+        String productFrom = queryRequest.getFrom();
+        if(projectId!=null) {
+            List<Integer> ids = assoProjectPersonService.getRootProjectIds();
+            if (ids.size() == 0||!ids.contains(projectId)) {
+                throw new XiaoShiException(ExceptionEnum.PERMISSION_ERROR,"无法查询此专题库专利");
+            }
+        }
+    }
 }