PatentClassNumberLinkService.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.common.core.base.Constants;
  3. import cn.cslg.pas.domain.PatentClassNumberLink;
  4. import cn.cslg.pas.common.model.params.PatentClassNumberParams;
  5. import cn.cslg.pas.common.utils.StringUtils;
  6. import cn.cslg.pas.mapper.PatentClassNumberLinkMapper;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import lombok.RequiredArgsConstructor;
  11. import org.springframework.context.annotation.Lazy;
  12. import org.springframework.stereotype.Service;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.stream.Collectors;
  16. /**
  17. * <p>
  18. * 分类号关联表 服务类
  19. * </p>
  20. *
  21. * @author 王岩
  22. * @since 2022-02-24
  23. */
  24. @Service
  25. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  26. public class PatentClassNumberLinkService extends ServiceImpl<PatentClassNumberLinkMapper, PatentClassNumberLink> {
  27. private final PatentClassNumberService patentClassNumberService;
  28. private final PatentService patentService;
  29. public PatentClassNumberLink getPatentClassNumberLinkByPatentIdAndTypeAndMain(Integer patentId, Integer type, Integer main) {
  30. LambdaQueryWrapper<PatentClassNumberLink> queryWrapper = new LambdaQueryWrapper<>();
  31. queryWrapper.eq(PatentClassNumberLink::getPatentId, patentId);
  32. queryWrapper.eq(PatentClassNumberLink::getType, type);
  33. queryWrapper.eq(PatentClassNumberLink::getMain, main);
  34. return this.getOne(queryWrapper);
  35. }
  36. public List<PatentClassNumberLink> getPatentClassNumberLinkByPatentIds(List<Integer> patentIds) {
  37. if (patentIds == null || patentIds.size() == 0) {
  38. return new ArrayList<>();
  39. }
  40. LambdaQueryWrapper<PatentClassNumberLink> queryWrapper = new LambdaQueryWrapper<>();
  41. queryWrapper.in(PatentClassNumberLink::getPatentId, patentIds);
  42. return this.list(queryWrapper);
  43. }
  44. public void importPatentClassNumberLink(Integer localPatentId, Integer importPatentId, List<PatentClassNumberLink> importPatentClassNumberLinkList) {
  45. this.deleteByPatentId(localPatentId);
  46. List<PatentClassNumberLink> patentClassNumberLinkList = importPatentClassNumberLinkList.stream().filter(item -> item.getPatentId().equals(importPatentId)).collect(Collectors.toList());
  47. for (PatentClassNumberLink patentClassNumberLink : patentClassNumberLinkList) {
  48. patentClassNumberLink.setPatentId(localPatentId);
  49. patentClassNumberLink.setId(null);
  50. }
  51. this.saveOrUpdateBatch(patentClassNumberLinkList);
  52. }
  53. public void updatePatentClassNumberLink(PatentClassNumberParams params) {
  54. if (params.getIpcList() != null && params.getIpcList().size() != 0) {
  55. this.updateData(params.getPatentId(), params.getIpcList(), Constants.PATENT_CLASS_NUMBER_IPC);
  56. }
  57. if (params.getCpcList() != null && params.getCpcList().size() != 0) {
  58. this.updateData(params.getPatentId(), params.getCpcList(), Constants.PATENT_CLASS_NUMBER_CPC);
  59. }
  60. if (params.getUpcList() != null && params.getUpcList().size() != 0) {
  61. this.updateData(params.getPatentId(), params.getUpcList(), Constants.PATENT_CLASS_NUMBER_UPC);
  62. }
  63. if (params.getLocList() != null && params.getLocList().size() != 0) {
  64. this.updateData(params.getPatentId(), params.getLocList(), Constants.PATENT_CLASS_NUMBER_LOC);
  65. }
  66. if (StringUtils.isNotEmpty(params.getMainIpc())) {
  67. this.updateMain(params.getPatentId(), Constants.PATENT_CLASS_NUMBER_IPC, params.getMainIpc());
  68. }
  69. if (StringUtils.isNotEmpty(params.getMainUpc())) {
  70. this.updateMain(params.getPatentId(), Constants.PATENT_CLASS_NUMBER_UPC, params.getMainUpc());
  71. }
  72. }
  73. public void updateMain(Integer patentId, Integer type, String code) {
  74. this.remove(Wrappers.<PatentClassNumberLink>lambdaQuery().eq(PatentClassNumberLink::getPatentId, patentId).eq(PatentClassNumberLink::getType, type).eq(PatentClassNumberLink::getCode, code));
  75. PatentClassNumberLink patentClassNumberLink = new PatentClassNumberLink();
  76. patentClassNumberLink.setCode(code);
  77. patentClassNumberLink.setPatentId(patentId);
  78. patentClassNumberLink.setType(type);
  79. patentClassNumberLink.setMain(1);
  80. patentClassNumberLink.insert();
  81. }
  82. public void updateData(Integer patentId, List<String> classNumber, Integer type) {
  83. this.deleteByPatentIdAndType(patentId, type, 0);
  84. List<PatentClassNumberLink> patentClassNumberLinkList = new ArrayList<>();
  85. for (String code : classNumber.stream().distinct().collect(Collectors.toList())) {
  86. PatentClassNumberLink patentClassNumberLink = new PatentClassNumberLink();
  87. patentClassNumberLink.setPatentId(patentId);
  88. patentClassNumberLink.setType(type);
  89. patentClassNumberLink.setCode(code);
  90. patentClassNumberLink.setMain(0);
  91. patentClassNumberLinkList.add(patentClassNumberLink);
  92. }
  93. this.saveOrUpdateBatch(patentClassNumberLinkList);
  94. }
  95. public void deleteByPatentIdAndType(Integer patentId, Integer type, Integer main) {
  96. LambdaQueryWrapper<PatentClassNumberLink> queryWrapper = new LambdaQueryWrapper<>();
  97. if (main != null) {
  98. queryWrapper.eq(PatentClassNumberLink::getMain, main);
  99. }
  100. queryWrapper.eq(PatentClassNumberLink::getType, type);
  101. queryWrapper.eq(PatentClassNumberLink::getPatentId, patentId);
  102. this.remove(queryWrapper);
  103. }
  104. public void deleteByPatentId(Integer patentId) {
  105. this.remove(Wrappers.<PatentClassNumberLink>lambdaQuery().eq(PatentClassNumberLink::getPatentId, patentId));
  106. }
  107. }