PatentInventorMergeService.java 4.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.domain.PatentApplicant;
  3. import cn.cslg.pas.domain.PatentApplicantMergeLink;
  4. import cn.cslg.pas.domain.PatentInventor;
  5. import cn.cslg.pas.domain.PatentInventorMerge;
  6. import cn.cslg.pas.mapper.PatentInventorMergeMapper;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  9. import com.baomidou.mybatisplus.extension.service.IService;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import lombok.RequiredArgsConstructor;
  12. import org.springframework.beans.BeanUtils;
  13. import org.springframework.context.annotation.Lazy;
  14. import org.springframework.stereotype.Service;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. import java.util.stream.Collectors;
  18. /**
  19. * @author Administrator
  20. * @description 针对表【os_patent_inventor_merge】的数据库操作Service
  21. * @createDate 2022-05-19 08:36:07
  22. */
  23. @Service
  24. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  25. public class PatentInventorMergeService extends ServiceImpl<PatentInventorMergeMapper, PatentInventorMerge> {
  26. private final PatentInventorService patentInventorService;
  27. public List<PatentInventorMerge> getPatentInventorMergeByProjectId(Integer projectId) {
  28. LambdaQueryWrapper<PatentInventorMerge> queryWrapper = new LambdaQueryWrapper<>();
  29. queryWrapper.eq(PatentInventorMerge::getProjectId, projectId);
  30. return this.list(queryWrapper);
  31. }
  32. public void deleteByMergeId(Integer mergeId) {
  33. this.remove(Wrappers.<PatentInventorMerge>lambdaQuery().eq(PatentInventorMerge::getMergeId, mergeId));
  34. }
  35. public void updatePatentInventorMergeLink(Integer mergeId, Integer projectId, List<Integer> inventorIds) {
  36. this.deleteByMergeId(mergeId);
  37. List<PatentInventorMerge> dataList = inventorIds.stream().map(item -> {
  38. PatentInventorMerge patentInventorMerge = new PatentInventorMerge();
  39. patentInventorMerge.setInventorId(item);
  40. patentInventorMerge.setProjectId(projectId);
  41. patentInventorMerge.setMergeId(mergeId);
  42. return patentInventorMerge;
  43. }).collect(Collectors.toList());
  44. if (dataList.size() != 0) {
  45. this.saveOrUpdateBatch(dataList);
  46. }
  47. }
  48. public void importPatentInventorMergeLink(Integer projectId, List<PatentInventor> importPatentInventorList, List<PatentInventorMerge> importPatentInventorMergeList) {
  49. List<PatentInventor> importPatentInventors = importPatentInventorList.stream().filter(PatentInventor::getMerge).collect(Collectors.toList());
  50. List<PatentInventor> localPatentInventors = patentInventorService.getPatentInventorByNameList(importPatentInventorList.stream().map(PatentInventor::getName).collect(Collectors.toList()));
  51. for (PatentInventor importPatentInventor : importPatentInventors) {
  52. PatentInventor localPatentInventor = localPatentInventors.stream().filter(item -> item.getName().equals(importPatentInventor.getName()) && item.getProjectId().equals(projectId)).findFirst().orElse(null);
  53. Integer patentInventorId;
  54. if (localPatentInventor == null) {
  55. localPatentInventor = new PatentInventor();
  56. patentInventorId = null;
  57. } else {
  58. patentInventorId = localPatentInventor.getId();
  59. }
  60. BeanUtils.copyProperties(importPatentInventor, localPatentInventor);
  61. localPatentInventor.setId(patentInventorId);
  62. localPatentInventor.setProjectId(projectId);
  63. localPatentInventor.insertOrUpdate();
  64. this.deleteByMergeId(localPatentInventor.getId());
  65. List<PatentInventorMerge> patentInventorMergeList = importPatentInventorMergeList.stream().filter(item -> item.getMergeId().equals(importPatentInventor.getId())).collect(Collectors.toList());
  66. for (PatentInventorMerge patentInventorMerge : patentInventorMergeList) {
  67. PatentInventor importPatentInventor2 = importPatentInventorList.stream().filter(item -> item.getId().equals(patentInventorMerge.getInventorId())).findFirst().orElse(new PatentInventor());
  68. PatentInventor localPatentInventor2 = localPatentInventors.stream().filter(item -> item.getName().equals(importPatentInventor2.getName())).findFirst().orElse(new PatentInventor());
  69. patentInventorMerge.setId(null);
  70. patentInventorMerge.setMergeId(localPatentInventor.getId());
  71. patentInventorMerge.setProjectId(projectId);
  72. patentInventorMerge.setInventorId(localPatentInventor2.getId());
  73. }
  74. this.saveOrUpdateBatch(patentInventorMergeList.stream().filter(item -> item.getInventorId() != null).collect(Collectors.toList()));
  75. }
  76. }
  77. }