ProjectService.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.model.addPatentToReport.AddProjectPatentToReportDTO;
  3. import cn.cslg.pas.common.model.addPatentToReport.PatentNoWithIdVO;
  4. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  5. import cn.cslg.pas.common.model.request.StringRequest;
  6. import cn.cslg.pas.common.utils.CacheUtils;
  7. import cn.cslg.pas.common.utils.LoginUtils;
  8. import cn.cslg.pas.common.vo.PatentWithIdVO;
  9. import cn.cslg.pas.domain.business.AssoProjectPerson;
  10. import cn.cslg.pas.domain.business.Project;
  11. import cn.cslg.pas.domain.es.Patent;
  12. import cn.cslg.pas.domain.es.PatentJoin;
  13. import cn.cslg.pas.mapper.ProjectMapper;
  14. import cn.cslg.pas.service.business.es.EsPatentService;
  15. import cn.cslg.pas.service.business.es.EsService;
  16. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  17. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.util.*;
  21. /**
  22. * 项目业务层
  23. *
  24. * @Author lirj
  25. * @Date 2023/11/1
  26. */
  27. @Service
  28. public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
  29. @Autowired
  30. private ProjectMapper projectMapper;
  31. @Autowired
  32. private CacheUtils cacheUtils;
  33. @Autowired
  34. private LoginUtils loginUtils;
  35. @Autowired
  36. private AssoProjectPersonService assoProjectPersonService;
  37. @Autowired
  38. private EsPatentService esPatentService;
  39. @Autowired
  40. private EsService esService;
  41. public Optional<Project> getByIdOpt(Integer id) {
  42. Project project = projectMapper.selectById(id);
  43. return Optional.ofNullable(project);
  44. }
  45. public Map<Integer, List<String>> getProjectPermissions(List<Integer> projectIds) {
  46. Map<Integer, List<String>> map = new HashMap<>();
  47. if (projectIds == null || projectIds.size() == 0) {
  48. return map;
  49. }
  50. projectIds.forEach(
  51. item -> {
  52. map.put(item, new ArrayList<>());
  53. }
  54. );
  55. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  56. String id = personnelVO.getId();
  57. LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
  58. queryWrapper.select(Project::getId, Project::getCreateId, Project::getHeadId);
  59. queryWrapper.in(Project::getId, projectIds);
  60. List<Project> projects = this.list(queryWrapper);
  61. projects.forEach(item -> {
  62. Integer projectId = item.getId();
  63. String createId = item.getCreateId();
  64. String headId = item.getHeadId();
  65. List<String> roles = map.get(projectId);
  66. if (id.equals(createId)) {
  67. roles.add("0");
  68. }
  69. if (id.equals(headId)) {
  70. roles.add("1");
  71. }
  72. });
  73. LambdaQueryWrapper<AssoProjectPerson> queryWrapper1 = new LambdaQueryWrapper<>();
  74. queryWrapper1.in(AssoProjectPerson::getProjectId, projectIds);
  75. queryWrapper1.eq(AssoProjectPerson::getPersonId, id);
  76. List<AssoProjectPerson> assoProjectPersonList = assoProjectPersonService.list(queryWrapper1);
  77. assoProjectPersonList.forEach(item -> {
  78. Integer projectId = item.getProjectId();
  79. List<String> roles = map.get(projectId);
  80. if (!roles.contains(item.getRole() + "")) {
  81. roles.add(item.getRole() + "");
  82. }
  83. });
  84. return map;
  85. }
  86. /**
  87. * 复制专利到另一个报告或专题库
  88. * @param addProjectPatentToReportDTO
  89. */
  90. public void addProjectPatentToReport(AddProjectPatentToReportDTO addProjectPatentToReportDTO) {
  91. //查询专利号
  92. StringRequest stringRequest = addProjectPatentToReportDTO.getStringRequest();
  93. Integer toProjectId = addProjectPatentToReportDTO.getToProjectId();
  94. List<String> notInNos = addProjectPatentToReportDTO.getNotInPatentNos();
  95. List<PatentNoWithIdVO> patentWithIdVOS = new ArrayList<>();
  96. List<String> InPatentNos = addProjectPatentToReportDTO.getInPatentNos();
  97. try {
  98. patentWithIdVOS = esPatentService.getPatentIdsWithNotNo(stringRequest, notInNos);
  99. if (patentWithIdVOS != null && patentWithIdVOS.size() > 0) {
  100. this.addAssoToEs(patentWithIdVOS, toProjectId);
  101. }
  102. if(InPatentNos!=null&&InPatentNos.size()>0){
  103. List<PatentNoWithIdVO> patentNoWithIdVOS =new ArrayList<>();
  104. InPatentNos.forEach(item->{
  105. PatentNoWithIdVO patentNoWithIdVO =new PatentNoWithIdVO();
  106. patentNoWithIdVO.setPatentNo(item);
  107. patentNoWithIdVOS.add(patentNoWithIdVO);
  108. });
  109. this.addAssoToEs(patentNoWithIdVOS,toProjectId);
  110. }
  111. } catch (Exception e) {
  112. }
  113. }
  114. /**
  115. * 添加报告或专题库与专利关联
  116. * @param patentWithIdVOS
  117. * @param projectId
  118. * @throws Exception
  119. */
  120. private void addAssoToEs(List<PatentNoWithIdVO> patentWithIdVOS, Integer projectId) throws Exception {
  121. if (patentWithIdVOS == null || patentWithIdVOS.size() == 0) {
  122. return;
  123. } else {
  124. patentWithIdVOS.forEach(item -> {
  125. if (item != null) {
  126. try {
  127. String id = item.getId();
  128. if(id==null){
  129. PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(item.getPatentNo());
  130. id =patentWithIdVO.getId();
  131. }
  132. Boolean ifInproject = esService.searchPatent(id, projectId);
  133. if (!ifInproject && id != null && !id.trim().equals("")) {
  134. Patent patent = new Patent();
  135. PatentJoin patentJoin = new PatentJoin();
  136. patentJoin.setParent(id);
  137. patentJoin.setName("project");
  138. patent.setPatentJoin(patentJoin);
  139. patent.setProjectId(projectId);
  140. esService.addChildPatent(patent, id);
  141. }
  142. } catch (Exception e) {
  143. e.printStackTrace();
  144. }
  145. }
  146. });
  147. }
  148. }
  149. }