TestService.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.domain.*;
  3. import cn.cslg.pas.domain.asso.AssoStructurePatent;
  4. import cn.cslg.pas.mapper.WebConfigMapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import lombok.RequiredArgsConstructor;
  8. import org.springframework.context.annotation.Lazy;
  9. import org.springframework.stereotype.Service;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.stream.Collectors;
  13. /**
  14. * @author admin
  15. * @description 针对表【web_config(网站配置)】的数据库操作Service实现
  16. * @createDate 2023-03-08 18:51:17
  17. */
  18. @Service
  19. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  20. public class TestService
  21. {
  22. private final IStructureService structureService;
  23. private final ProjectFieldTreeService projectFieldTreeService;
  24. private final ProjectFieldPatentLinkService patentLinkService;
  25. private final PatentService patentService;
  26. private final IStructurePatentService structurePatentService;
  27. public void getConfigById(Integer id,Integer optionId){
  28. // 查询产品id查询产品架构
  29. LambdaQueryWrapper<Structure> wrapper =new LambdaQueryWrapper<>();
  30. wrapper.eq(Structure::getProductId,id);
  31. List<Structure> structureList =structureService.list(wrapper);
  32. List<Structure> structures =structureList.stream().filter(item->item.getParentId().equals(0)).collect(Collectors.toList());
  33. LambdaQueryWrapper<ProjectFieldPatentLink> wrapper1 =new LambdaQueryWrapper<>();
  34. wrapper1.eq(ProjectFieldPatentLink::getFieldId,4766)
  35. .eq(ProjectFieldPatentLink::getOptionId,optionId);
  36. List<ProjectFieldPatentLink> links =patentLinkService.list(wrapper1);
  37. List<Integer> pids =links.stream().map(ProjectFieldPatentLink::getPatentId).collect(Collectors.toList());
  38. this.reT(structureList,structures,0,0,id,pids);
  39. }
  40. public void reT(List<Structure> structureList,List<Structure> structures,Integer t,Integer b,Integer id,List<Integer> pids){
  41. structures.forEach(item->{
  42. //根据父节点和名称查找自定义字段
  43. LambdaQueryWrapper<ProjectFieldTree> wrapper =new LambdaQueryWrapper<>();
  44. wrapper.eq(ProjectFieldTree::getParentId,t)
  45. .eq(ProjectFieldTree::getName,item.getStructureName())
  46. .eq(ProjectFieldTree::getFieldId,4767);
  47. ProjectFieldTree projectFieldTree = projectFieldTreeService.getOne(wrapper);
  48. if(projectFieldTree !=null) {
  49. //根据projectFieldTree.getId()查询关联专利
  50. LambdaQueryWrapper<ProjectFieldPatentLink> wrapper1 =new LambdaQueryWrapper<>();
  51. wrapper1.eq(ProjectFieldPatentLink::getFieldId,4767)
  52. .eq(ProjectFieldPatentLink::getOptionId,projectFieldTree.getId());
  53. List<ProjectFieldPatentLink> links = patentLinkService.list(wrapper1);
  54. List<Integer> patentIds =links.stream().map(ProjectFieldPatentLink::getPatentId).collect(Collectors.toList());
  55. //取交集
  56. patentIds.retainAll(pids);
  57. //根据专利id查询专利号
  58. if(patentIds.size()!=0){
  59. LambdaQueryWrapper<Patent> wrapper2 =new LambdaQueryWrapper<>();
  60. wrapper2.in(Patent::getId,patentIds);
  61. List<Patent> patents =patentService.list(wrapper2);
  62. List<String> patentNos =patents.stream().map(Patent::getPatentNo).collect(Collectors.toList());
  63. List<AssoStructurePatent> assoStructurePatents =new ArrayList<>();
  64. patentNos.forEach(tem->{
  65. AssoStructurePatent assoStructurePatent =new AssoStructurePatent();
  66. assoStructurePatent.setPath(item.getPath());
  67. assoStructurePatent.setPatentNo(tem);
  68. assoStructurePatent.setProjectId(81);
  69. assoStructurePatent.setProductId(id);
  70. assoStructurePatent.setStructureId(item.getId());
  71. assoStructurePatents.add(assoStructurePatent);
  72. });
  73. structurePatentService.saveBatch(assoStructurePatents);
  74. }
  75. //根据父节点查询子节点
  76. List<Structure> child = structureList.stream().filter(tem -> tem.getParentId().equals(item.getId())).collect(Collectors.toList());
  77. if (child.size() == 0) {
  78. //根据自定义字段父节点id查询子节点
  79. LambdaQueryWrapper<ProjectFieldTree> wrapper2 =new LambdaQueryWrapper<>();
  80. wrapper2.eq(ProjectFieldTree::getParentId,projectFieldTree.getId());
  81. List<ProjectFieldTree> trees =projectFieldTreeService.list(wrapper2);
  82. List<Integer> treeIds =trees.stream().map(ProjectFieldTree::getId).collect(Collectors.toList());
  83. if(treeIds.size()!=0) {
  84. LambdaQueryWrapper<ProjectFieldPatentLink> wrapper3 = new LambdaQueryWrapper<>();
  85. wrapper3.eq(ProjectFieldPatentLink::getFieldId, 4767)
  86. .in(ProjectFieldPatentLink::getOptionId, treeIds);
  87. List<ProjectFieldPatentLink> links2 = patentLinkService.list(wrapper3);
  88. List<Integer> patentIds2 =links2.stream().map(ProjectFieldPatentLink::getPatentId).collect(Collectors.toList());
  89. patentIds2.retainAll(pids);
  90. if(patentIds2.size()!=0){
  91. LambdaQueryWrapper<Patent> wrapper4 =new LambdaQueryWrapper<>();
  92. wrapper4.in(Patent::getId,patentIds2);
  93. List<Patent> patents =patentService.list(wrapper4);
  94. List<String> patentNos =patents.stream().map(Patent::getPatentNo).collect(Collectors.toList());
  95. List<AssoStructurePatent> assoStructurePatents =new ArrayList<>();
  96. patentNos.forEach(tem->{
  97. AssoStructurePatent assoStructurePatent =new AssoStructurePatent();
  98. assoStructurePatent.setPath(item.getPath());
  99. assoStructurePatent.setPatentNo(tem);
  100. assoStructurePatent.setProjectId(81);
  101. assoStructurePatent.setProductId(id);
  102. assoStructurePatent.setStructureId(item.getId());
  103. assoStructurePatents.add(assoStructurePatent);
  104. });
  105. structurePatentService.saveBatch(assoStructurePatents);
  106. LambdaQueryWrapper<ProjectFieldTree> wrapper5 =new LambdaQueryWrapper<>();
  107. wrapper5.in(ProjectFieldTree::getParentId,treeIds);
  108. List<ProjectFieldTree> trees5 =projectFieldTreeService.list(wrapper5);
  109. List<Integer> treeIds5 =trees5.stream().map(ProjectFieldTree::getId).collect(Collectors.toList());
  110. if(treeIds5.size()>0) {
  111. LambdaQueryWrapper<ProjectFieldPatentLink> wrapper6 = new LambdaQueryWrapper<>();
  112. wrapper6.eq(ProjectFieldPatentLink::getFieldId, 4767)
  113. .in(ProjectFieldPatentLink::getOptionId, treeIds5);
  114. List<ProjectFieldPatentLink> links5 = patentLinkService.list(wrapper6);
  115. List<Integer> patentIds5 = links5.stream().map(ProjectFieldPatentLink::getPatentId).collect(Collectors.toList());
  116. patentIds5.retainAll(pids);
  117. if (patentIds5.size() != 0) {
  118. LambdaQueryWrapper<Patent> wrapper7= new LambdaQueryWrapper<>();
  119. wrapper7.in(Patent::getId, patentIds5);
  120. List<Patent> patents7 = patentService.list(wrapper7);
  121. List<String> patentNos7 = patents7.stream().map(Patent::getPatentNo).collect(Collectors.toList());
  122. List<AssoStructurePatent> assoStructurePatents1 = new ArrayList<>();
  123. patentNos7.forEach(tem -> {
  124. AssoStructurePatent assoStructurePatent = new AssoStructurePatent();
  125. assoStructurePatent.setPath(item.getPath());
  126. assoStructurePatent.setPatentNo(tem);
  127. assoStructurePatent.setProjectId(81);
  128. assoStructurePatent.setProductId(id);
  129. assoStructurePatent.setStructureId(item.getId());
  130. assoStructurePatents1.add(assoStructurePatent);
  131. });
  132. structurePatentService.saveBatch(assoStructurePatents1);
  133. }
  134. }
  135. }
  136. }
  137. } else {
  138. Integer re = projectFieldTree.getId();
  139. this.reT(structureList, child, re,t,id,pids);
  140. }
  141. }
  142. });
  143. }
  144. }