PatentNoUtil.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package cn.cslg.pas.common.utils;
  2. import cn.cslg.pas.common.vo.OPS.PatentNoDetailVO;
  3. import org.springframework.stereotype.Component;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. @Component
  7. public class PatentNoUtil {
  8. public static PatentNoDetailVO getPatentNoDetail(String patentNo){
  9. PatentNoDetailVO patentNoDetailVO = new PatentNoDetailVO();
  10. Pattern PATENT_PATTERN = Pattern.compile("^([A-Za-z]{2})(\\d+)([A-Za-z\\d]+)$");
  11. Matcher matcher = PATENT_PATTERN.matcher(patentNo);
  12. if (matcher.find()) {
  13. String country = matcher.group(1);
  14. String num = matcher.group(2);
  15. String cc = matcher.group(3);
  16. patentNoDetailVO.setKind(cc);
  17. patentNoDetailVO.setNumber(num);
  18. patentNoDetailVO.setCc(country);
  19. return patentNoDetailVO;
  20. } else {
  21. throw new IllegalArgumentException("Invalid patent number format: " + patentNo);
  22. }
  23. }
  24. public static String formatApNo(String patentNo){
  25. Pattern patternEn = Pattern.compile("^[A-Za-z]{2}.*");
  26. Matcher matcher = patternEn.matcher(patentNo);
  27. if(!matcher.find()){
  28. patentNo ="CN"+patentNo;
  29. }
  30. String numbers = patentNo.replaceAll("[^\\d]", "");
  31. char secondLastChar = patentNo.charAt(patentNo.length() - 2);
  32. if(numbers.length()==13&&secondLastChar!='.'){
  33. StringBuilder stringBuilder =new StringBuilder(patentNo);
  34. stringBuilder.insert(patentNo.length() - 1,".");
  35. patentNo =stringBuilder.toString();
  36. }
  37. return patentNo;
  38. }
  39. }