|
@@ -31,7 +31,7 @@ public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMap
|
|
|
private final PatentService patentService;
|
|
|
private final PatentApplicantService patentApplicantService;
|
|
|
private final PatentSimpleFamilyLinkService patentSimpleFamilyLinkService;
|
|
|
-
|
|
|
+ private final PatentSimpleFamilyMapper patentSimpleFamilyLinkMapper;
|
|
|
public PatentSimpleFamily getPatentSimpleFamilyByIdsAndType(List<Integer> ids, Integer type) {
|
|
|
if (ids == null || ids.size() == 0) {
|
|
|
return null;
|
|
@@ -87,97 +87,191 @@ public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMap
|
|
|
return patentSimpleFamily;
|
|
|
}
|
|
|
|
|
|
+// public void updateData(List<String> familyNo, String patentNo, Integer patentId, Integer type) {
|
|
|
+// //两个表 1.同族表 2.同组关联专利表
|
|
|
+// //用专利号 获取同族关联专利表的信息
|
|
|
+// if (!familyNo.contains(patentNo)) {
|
|
|
+// familyNo.add(patentNo);
|
|
|
+// }
|
|
|
+// List<PatentSimpleFamilyLink> patentSimpleFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNo(familyNo);
|
|
|
+// PatentSimpleFamily family = new PatentSimpleFamily();
|
|
|
+//
|
|
|
+// if (patentSimpleFamilyLinkList == null || patentSimpleFamilyLinkList.size() == 0) {
|
|
|
+// //如果 同组关联专利表 内没有数据 就新建一条 同族表 的数据
|
|
|
+// family = this.add(type);
|
|
|
+// } else {
|
|
|
+// //如果 同组关联专利表 内有数据 那么用查询出来的List中的 同族表 的ID来获取 同族表 内的其他对应信息
|
|
|
+// PatentSimpleFamily patentSimpleFamily = this.getPatentSimpleFamilyByIdsAndType(patentSimpleFamilyLinkList.stream().map(PatentSimpleFamilyLink::getFamilyId).collect(Collectors.toList()), type);
|
|
|
+// if (patentSimpleFamily == null) {
|
|
|
+// family = this.add(type);
|
|
|
+// } else {
|
|
|
+// family = patentSimpleFamily;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//// List<PatentSimpleFamilyLink> temps = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNoAndFamilyId(familyNo, family.getId());
|
|
|
+//
|
|
|
+// List<Patent> patent1s = patentService.getPublicDateAndPatentNoByPatentNo(familyNo);
|
|
|
+// // 遍历
|
|
|
+// if (patentSimpleFamilyLinkList != null && patentSimpleFamilyLinkList.size() != 0) {
|
|
|
+// Patent patent2 = new Patent();
|
|
|
+// for (String patent : familyNo) {
|
|
|
+// PatentSimpleFamilyLink temp = patentSimpleFamilyLinkList.stream().filter(item -> item.getPatentNo().equals(patent)).findFirst().orElse(null);
|
|
|
+// if (temp == null) {
|
|
|
+// PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
|
|
|
+// patentSimpleFamilyLink.setFamilyId(family.getId());
|
|
|
+// patentSimpleFamilyLink.setPatentNo(patent);
|
|
|
+// patentSimpleFamilyLink.insert();
|
|
|
+// } else {
|
|
|
+// temp.setFamilyId(family.getId());
|
|
|
+// temp.updateById();
|
|
|
+// }
|
|
|
+//
|
|
|
+// //更新同族专利的同族号
|
|
|
+// Patent patent1 = patent1s.stream().filter(item -> item.getPatentNo().equals(patent)).findFirst().orElse(null);
|
|
|
+// if (patent1 != null && patent1.getType() != null) {
|
|
|
+// switch (type) {
|
|
|
+// case 1:
|
|
|
+// patent1.setSimpleFamily(family.getId());
|
|
|
+// break;
|
|
|
+// case 2:
|
|
|
+// patent1.setInpadocFamily(family.getId());
|
|
|
+// break;
|
|
|
+// case 3:
|
|
|
+// patent1.setPatSnapFamily(family.getId());
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// family.setPatentNo(patent1.getPatentNo());
|
|
|
+// patent1.updateById();
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (StringUtils.isEmpty(family.getPatentNo())) {
|
|
|
+// family.setPatentNo(patent);
|
|
|
+// } else {
|
|
|
+// if (patent1 != null && patent2 != null) {
|
|
|
+// String country1 = PatentUtils.getPatentCountry(patent1.getPatentNo());
|
|
|
+// String country2 = PatentUtils.getPatentCountry(patent2.getPatentNo());
|
|
|
+// if ("CN".equals(country1) && !"CN".equals(country2)) {
|
|
|
+// family.setPatentNo(patent1.getPatentNo());
|
|
|
+// patent2 = patent1;
|
|
|
+// } else if (!"CN".equals(country1) && "CN".equals(country2)) {
|
|
|
+// family.setPatentNo(patent2.getPatentNo());
|
|
|
+// } else if (("CN".equals(country1) && "CN".equals(country2)) || (!"CN".equals(country1) && !"CN".equals(country2))) {
|
|
|
+// Integer publicData1 = patent1.getPublicDate();
|
|
|
+// Integer publicData2 = patent2.getPublicDate();
|
|
|
+// if (publicData1 == null && publicData2 != null) {
|
|
|
+// family.setPatentNo(patent2.getPatentNo());
|
|
|
+// } else if (publicData1 != null && publicData2 == null) {
|
|
|
+// family.setPatentNo(patent1.getPatentNo());
|
|
|
+// patent2 = patent1;
|
|
|
+// } else if (publicData1 != null && publicData2 != null) {
|
|
|
+// if (publicData1 > publicData2) {
|
|
|
+// family.setPatentNo(patent2.getPatentNo());
|
|
|
+// } else {
|
|
|
+// family.setPatentNo(patent1.getPatentNo());
|
|
|
+// patent2 = patent1;
|
|
|
+// System.out.println(patent2);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// family.updateById();
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ public PatentSimpleFamily add(Integer type,String patentNO) {
|
|
|
+ PatentSimpleFamily patentSimpleFamily = new PatentSimpleFamily();
|
|
|
+ patentSimpleFamily.setType(type);
|
|
|
+ patentSimpleFamily.setPatentNo(patentNO);
|
|
|
+ patentSimpleFamily.insert();
|
|
|
+ return patentSimpleFamily;
|
|
|
+ }
|
|
|
+
|
|
|
public void updateData(List<String> familyNo, String patentNo, Integer patentId, Integer type) {
|
|
|
- //两个表 1.同族表 2.同组关联专利表
|
|
|
- //用专利号 获取同族关联专利表的信息
|
|
|
+ long start =System.currentTimeMillis();
|
|
|
+ //0.合并专利号
|
|
|
if (!familyNo.contains(patentNo)) {
|
|
|
familyNo.add(patentNo);
|
|
|
}
|
|
|
- List<PatentSimpleFamilyLink> patentSimpleFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNo(familyNo);
|
|
|
- PatentSimpleFamily family = new PatentSimpleFamily();
|
|
|
-
|
|
|
- if (patentSimpleFamilyLinkList == null || patentSimpleFamilyLinkList.size() == 0) {
|
|
|
- //如果 同组关联专利表 内没有数据 就新建一条 同族表 的数据
|
|
|
- family = this.add(type);
|
|
|
- } else {
|
|
|
- //如果 同组关联专利表 内有数据 那么用查询出来的List中的 同族表 的ID来获取 同族表 内的其他对应信息
|
|
|
- PatentSimpleFamily patentSimpleFamily = this.getPatentSimpleFamilyByIdsAndType(patentSimpleFamilyLinkList.stream().map(PatentSimpleFamilyLink::getFamilyId).collect(Collectors.toList()), type);
|
|
|
- if (patentSimpleFamily == null) {
|
|
|
- family = this.add(type);
|
|
|
- } else {
|
|
|
- family = patentSimpleFamily;
|
|
|
+ //1.根据专利号(faimlyNo + patentNo)从专利基础信息表中获取专利数据,以受理国家、申请日由小到大排序
|
|
|
+ List<Patent> patent1s = patentService.getPublicDateAndPatentNoByPatentNo(familyNo);
|
|
|
+
|
|
|
+ //2.从1步取得的专利清单获取第一个CN专利号,为插入Family表中的专利号,如果没有CN专利,取第一个专利号
|
|
|
+ String temPatentNo="";
|
|
|
+ if(patent1s != null) {
|
|
|
+ Patent patentTem = patent1s.stream().filter(item -> PatentUtils.getPatentCountry(item.getPatentNo()) == "CN").findFirst().orElse(null);
|
|
|
+ if (patentTem == null) {
|
|
|
+ patentTem = patent1s.get(0);
|
|
|
}
|
|
|
+ temPatentNo=patentTem.getPatentNo();
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ temPatentNo= patentNo;
|
|
|
}
|
|
|
-// List<PatentSimpleFamilyLink> temps = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNoAndFamilyId(familyNo, family.getId());
|
|
|
|
|
|
- List<Patent> patent1s = patentService.getPublicDateAndPatentNoByPatentNo(familyNo);
|
|
|
- // 遍历
|
|
|
- if (patentSimpleFamilyLinkList != null && patentSimpleFamilyLinkList.size() != 0) {
|
|
|
- Patent patent2 = new Patent();
|
|
|
- for (String patent : familyNo) {
|
|
|
- PatentSimpleFamilyLink temp = patentSimpleFamilyLinkList.stream().filter(item -> item.getPatentNo().equals(patent)).findFirst().orElse(null);
|
|
|
- if (temp == null) {
|
|
|
- PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
|
|
|
- patentSimpleFamilyLink.setFamilyId(family.getId());
|
|
|
- patentSimpleFamilyLink.setPatentNo(patent);
|
|
|
- patentSimpleFamilyLink.insert();
|
|
|
- } else {
|
|
|
- temp.setFamilyId(family.getId());
|
|
|
- temp.updateById();
|
|
|
- }
|
|
|
+ //3.根据专利号(faimlyNo + patentNo)和同族类型从family关联表中取数据
|
|
|
+ List<PatentSimpleFamilyLink> patentSimpleFamilyLinkList = patentSimpleFamilyLinkMapper.getPatentFamilyLinkByPatentNo(familyNo,type);
|
|
|
+
|
|
|
+ //4.第3步中如果有数据,则取得一个familID为下一步的插入关联表中的id
|
|
|
+ PatentSimpleFamily patentSimpleFamily;
|
|
|
+ if(patentSimpleFamilyLinkList !=null && patentSimpleFamilyLinkList.size() >0){
|
|
|
+ //4.1 第3步中有数据
|
|
|
+ patentSimpleFamily = this.getPatentSimpleFamilyByIdsAndType(patentSimpleFamilyLinkList.stream().map(PatentSimpleFamilyLink::getFamilyId).collect(Collectors.toList()), type);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //4.2 第3步中有数据则在Family表中添加一条记录,并
|
|
|
+ patentSimpleFamily = this.add(type,temPatentNo);
|
|
|
+ }
|
|
|
|
|
|
- //更新同族专利的同族号
|
|
|
- Patent patent1 = patent1s.stream().filter(item -> item.getPatentNo().equals(patent)).findFirst().orElse(null);
|
|
|
- if (patent1 != null && patent1.getType() != null) {
|
|
|
- switch (type) {
|
|
|
- case 1:
|
|
|
- patent1.setSimpleFamily(family.getId());
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- patent1.setInpadocFamily(family.getId());
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- patent1.setPatSnapFamily(family.getId());
|
|
|
- break;
|
|
|
- }
|
|
|
- family.setPatentNo(patent1.getPatentNo());
|
|
|
- patent1.updateById();
|
|
|
+ //5.专利号(faimlyNo + patentNo)和第三步获得的记录比较,如果没有则在关联表中添加一条记录
|
|
|
+ for(String temPN:familyNo) {
|
|
|
+ PatentSimpleFamilyLink temp = patentSimpleFamilyLinkList.stream().filter(item -> item.getPatentNo().equals(temPN)).findFirst().orElse(null);
|
|
|
+ if (temp == null) {
|
|
|
+ //5.1 如果关联表中没有记录,添加一个
|
|
|
+ PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
|
|
|
+ patentSimpleFamilyLink.setFamilyId(patentSimpleFamily.getId());
|
|
|
+ patentSimpleFamilyLink.setPatentNo(temPN);
|
|
|
+ patentSimpleFamilyLink.insert();
|
|
|
+ } else {
|
|
|
+ //5.2 如果关联表中有记录,判断familyid是否跟temFailyID相同,不相同则更新记录
|
|
|
+ if (temp.getFamilyId() != patentSimpleFamily.getId()) {
|
|
|
+ temp.setFamilyId(patentSimpleFamily.getId());
|
|
|
+ temp.updateById();
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isEmpty(family.getPatentNo())) {
|
|
|
- family.setPatentNo(patent);
|
|
|
- } else {
|
|
|
- if (patent1 != null && patent2 != null) {
|
|
|
- String country1 = PatentUtils.getPatentCountry(patent1.getPatentNo());
|
|
|
- String country2 = PatentUtils.getPatentCountry(patent2.getPatentNo());
|
|
|
- if ("CN".equals(country1) && !"CN".equals(country2)) {
|
|
|
- family.setPatentNo(patent1.getPatentNo());
|
|
|
- patent2 = patent1;
|
|
|
- } else if (!"CN".equals(country1) && "CN".equals(country2)) {
|
|
|
- family.setPatentNo(patent2.getPatentNo());
|
|
|
- } else if (("CN".equals(country1) && "CN".equals(country2)) || (!"CN".equals(country1) && !"CN".equals(country2))) {
|
|
|
- Integer publicData1 = patent1.getPublicDate();
|
|
|
- Integer publicData2 = patent2.getPublicDate();
|
|
|
- if (publicData1 == null && publicData2 != null) {
|
|
|
- family.setPatentNo(patent2.getPatentNo());
|
|
|
- } else if (publicData1 != null && publicData2 == null) {
|
|
|
- family.setPatentNo(patent1.getPatentNo());
|
|
|
- patent2 = patent1;
|
|
|
- } else if (publicData1 != null && publicData2 != null) {
|
|
|
- if (publicData1 > publicData2) {
|
|
|
- family.setPatentNo(patent2.getPatentNo());
|
|
|
- } else {
|
|
|
- family.setPatentNo(patent1.getPatentNo());
|
|
|
- patent2 = patent1;
|
|
|
- System.out.println(patent2);
|
|
|
- }
|
|
|
- }
|
|
|
+ //6.如果同族关联表有数据则更新,无数据则插入一条数据
|
|
|
+ Patent patent1 = patent1s.stream().filter(item -> item.getPatentNo().equals(temPN)).findFirst().orElse(null);
|
|
|
+ if (patent1 != null) {
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ if(patent1.getSimpleFamily()!=patentSimpleFamily.getId())
|
|
|
+ {
|
|
|
+ patent1.setSimpleFamily(patentSimpleFamily.getId());
|
|
|
+ patent1.updateById();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ if(patent1.getInpadocFamily()!=patentSimpleFamily.getId())
|
|
|
+ {
|
|
|
+ patent1.setInpadocFamily(patentSimpleFamily.getId());
|
|
|
+ patent1.updateById();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ if(patent1.getPatSnapFamily()!=patentSimpleFamily.getId())
|
|
|
+ {
|
|
|
+ patent1.setPatSnapFamily(patentSimpleFamily.getId());
|
|
|
+ patent1.updateById();
|
|
|
}
|
|
|
- }
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
- family.updateById();
|
|
|
}
|
|
|
}
|
|
|
+ long end =System.currentTimeMillis();
|
|
|
+ System.out.println("总共用时---"+(start-end));
|
|
|
}
|
|
|
}
|