|
@@ -3,10 +3,12 @@ package cn.cslg.pas.service.business;
|
|
import cn.cslg.pas.common.dto.AddNoveltyProjectDTO;
|
|
import cn.cslg.pas.common.dto.AddNoveltyProjectDTO;
|
|
import cn.cslg.pas.common.dto.AddTechnicalCaseDTO;
|
|
import cn.cslg.pas.common.dto.AddTechnicalCaseDTO;
|
|
import cn.cslg.pas.common.dto.TechnicalCaseIdDTO;
|
|
import cn.cslg.pas.common.dto.TechnicalCaseIdDTO;
|
|
|
|
+import cn.cslg.pas.common.model.cronModel.Personnel;
|
|
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
|
|
+import cn.cslg.pas.common.vo.QueryInventionPointVO;
|
|
import cn.cslg.pas.common.vo.TechnicalCaseVO;
|
|
import cn.cslg.pas.common.vo.TechnicalCaseVO;
|
|
import cn.cslg.pas.domain.BaseEntity;
|
|
import cn.cslg.pas.domain.BaseEntity;
|
|
import cn.cslg.pas.domain.business.*;
|
|
import cn.cslg.pas.domain.business.*;
|
|
@@ -14,12 +16,15 @@ import cn.cslg.pas.domain.es.Patent;
|
|
import cn.cslg.pas.domain.es.TechnicalCasePatent;
|
|
import cn.cslg.pas.domain.es.TechnicalCasePatent;
|
|
import cn.cslg.pas.exception.XiaoShiException;
|
|
import cn.cslg.pas.exception.XiaoShiException;
|
|
import cn.cslg.pas.mapper.AssoTechnicalCaseFileMapper;
|
|
import cn.cslg.pas.mapper.AssoTechnicalCaseFileMapper;
|
|
|
|
+import cn.cslg.pas.mapper.ProjectMapper;
|
|
import cn.cslg.pas.mapper.TechnicalCaseMapper;
|
|
import cn.cslg.pas.mapper.TechnicalCaseMapper;
|
|
import cn.cslg.pas.service.common.FileManagerService;
|
|
import cn.cslg.pas.service.common.FileManagerService;
|
|
|
|
+import cn.cslg.pas.service.permissions.PermissionService;
|
|
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
|
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
|
import co.elastic.clients.elasticsearch._types.SortOptions;
|
|
import co.elastic.clients.elasticsearch._types.SortOptions;
|
|
import co.elastic.clients.elasticsearch._types.SortOrder;
|
|
import co.elastic.clients.elasticsearch._types.SortOrder;
|
|
import co.elastic.clients.elasticsearch._types.query_dsl.IdsQuery;
|
|
import co.elastic.clients.elasticsearch._types.query_dsl.IdsQuery;
|
|
|
|
+import co.elastic.clients.elasticsearch._types.query_dsl.Like;
|
|
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
|
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.QueryBuilders;
|
|
import co.elastic.clients.elasticsearch.core.IndexResponse;
|
|
import co.elastic.clients.elasticsearch.core.IndexResponse;
|
|
@@ -33,6 +38,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -60,6 +66,9 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
|
|
private FileManagerService fileManagerService;
|
|
private FileManagerService fileManagerService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private PermissionService permissionService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
private AssoTechnicalCaseFileMapper assoTechnicalCaseFileMapper;
|
|
private AssoTechnicalCaseFileMapper assoTechnicalCaseFileMapper;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -68,6 +77,9 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
|
|
@Autowired
|
|
@Autowired
|
|
private TechnicalCaseMapper technicalCaseMapper;
|
|
private TechnicalCaseMapper technicalCaseMapper;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProjectMapper projectMapper;
|
|
|
|
+
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
public TechnicalCaseIdDTO addOrUpdateTechnicalCase(AddTechnicalCaseDTO vo) throws Exception {
|
|
public TechnicalCaseIdDTO addOrUpdateTechnicalCase(AddTechnicalCaseDTO vo) throws Exception {
|
|
PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
@@ -172,6 +184,54 @@ public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, Techn
|
|
this.removeById(vo.getTechnicalCaseId());
|
|
this.removeById(vo.getTechnicalCaseId());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public List<QueryInventionPointVO> querySimilarInventionPoint(String content) throws IOException {
|
|
|
|
+ SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
|
|
+ //设置查询索引
|
|
|
|
+ builder.index("technical_case_patent");
|
|
|
|
+ Like likeContent = Like.of(i -> i.text(content));
|
|
|
|
+ Query query = QueryBuilders.moreLikeThis(i -> i.fields("invention_point").like(likeContent)
|
|
|
|
+ .minTermFreq(1).maxQueryTerms(12));
|
|
|
|
+ builder.query(query);
|
|
|
|
+// builder.from(0).size(200);
|
|
|
|
+ //解除最大条数限制
|
|
|
|
+ builder.trackTotalHits(i -> i.enabled(true));
|
|
|
|
+ SearchResponse<TechnicalCasePatent> response = client.search(builder.build(), TechnicalCasePatent.class);
|
|
|
|
+ List<Hit<TechnicalCasePatent>> hits = response.hits().hits();
|
|
|
|
+ List<QueryInventionPointVO> inventionPointVOS = new ArrayList<>();
|
|
|
|
+ for (Hit<TechnicalCasePatent> hit : hits) {
|
|
|
|
+ TechnicalCasePatent casePatent = hit.source();
|
|
|
|
+ QueryInventionPointVO inventionPointVO = new QueryInventionPointVO();
|
|
|
|
+ inventionPointVO.setProjectId(casePatent.getProjectId());
|
|
|
|
+ inventionPointVO.setInventionPoint(casePatent.getInventionPoint());
|
|
|
|
+ inventionPointVOS.add(inventionPointVO);
|
|
|
|
+ }
|
|
|
|
+ List<Personnel> personnels = new ArrayList<>();
|
|
|
|
+ if (!CollectionUtils.isEmpty(inventionPointVOS)) {
|
|
|
|
+ List<Integer> projectIds = inventionPointVOS.stream().map(QueryInventionPointVO::getProjectId).collect(Collectors.toList());
|
|
|
|
+ List<Project> projects = projectMapper.selectBatchIds(projectIds);
|
|
|
|
+ List<String> createIds = projects.stream().map(Project::getCreateId).collect(Collectors.toList());
|
|
|
|
+ //查询创建人名称
|
|
|
|
+ if (!CollectionUtils.isEmpty(createIds)) {
|
|
|
|
+ String res = permissionService.getPersonnelByIdsFromPCS(createIds);
|
|
|
|
+ JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(res);
|
|
|
|
+ personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
|
|
|
|
+ }
|
|
|
|
+ for (QueryInventionPointVO pointVO : inventionPointVOS) {
|
|
|
|
+ Project project = projects.stream().filter(i -> i.getId().equals(pointVO.getProjectId())).findFirst().orElse(null);
|
|
|
|
+ if (ObjectUtils.isNotEmpty(project)) {
|
|
|
|
+ pointVO.setCreateId(project.getCreateId());
|
|
|
|
+ pointVO.setCreateTime(project.getCreateTime());
|
|
|
|
+ //装载人员信息
|
|
|
|
+ Personnel personnel = personnels.stream().filter(item -> item.getId().equals(pointVO.getCreateId())).findFirst().orElse(null);
|
|
|
|
+ if (personnel != null) {
|
|
|
|
+ pointVO.setCreateName(personnel.getPersonnelName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return inventionPointVOS;
|
|
|
|
+ }
|
|
|
|
+
|
|
//查询TechnicalCasePatent
|
|
//查询TechnicalCasePatent
|
|
public String selectTechnicalCasePatent(Integer projectId) throws Exception {
|
|
public String selectTechnicalCasePatent(Integer projectId) throws Exception {
|
|
SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
SearchRequest.Builder builder = new SearchRequest.Builder();
|