|
@@ -93,10 +93,11 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
}
|
|
|
MergePerson person = new MergePerson();
|
|
|
BeanUtils.copyProperties(vo, person);
|
|
|
+ person.setMergedName(JSONArray.toJSONString(mergedNames));
|
|
|
person.setCreateId(personnelVO.getId());
|
|
|
person.setCreateTime(new Date());
|
|
|
person.insert();
|
|
|
- //todo 关联相关专利
|
|
|
+
|
|
|
SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
|
//设置查询索引
|
|
|
builder.index("patent");
|
|
@@ -119,14 +120,13 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
builder.query(query);
|
|
|
SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
|
List<Hit<Patent>> hits = response.hits().hits();
|
|
|
- List<String> ids = new ArrayList<>();
|
|
|
Map<String, Patent> map = new HashMap<>();
|
|
|
for (Hit<Patent> hit : hits) {
|
|
|
String id = hit.id();
|
|
|
map.put(id, hit.source());
|
|
|
}
|
|
|
|
|
|
- if (!CollectionUtils.isEmpty(ids)) {
|
|
|
+ if (!CollectionUtils.isEmpty(map)) {
|
|
|
List<PatentMergePerson> mergePersonList = new ArrayList<>();
|
|
|
PatentMergePerson mergePerson = new PatentMergePerson();
|
|
|
mergePerson.setName(vo.getName());
|
|
@@ -137,8 +137,9 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
|
|
|
for (String id : map.keySet()) {
|
|
|
Patent patent = map.get(id);
|
|
|
- List<PatentMergePerson> mergeApplicant = patent.getMergeApplicant();
|
|
|
-
|
|
|
+ List<PatentMergePerson> mergeApplicants = patent.getMergeApplicant();
|
|
|
+ List<String> Names = mergeApplicants.stream().map(PatentMergePerson::getName).collect(Collectors.toList());
|
|
|
+ mergePersonList.addAll(mergeApplicants);
|
|
|
patent.setMergeApplicant(mergePersonList);
|
|
|
patent.setMergeRightHolder(mergePersonList);
|
|
|
esService.updateMergePerson(patent, id);
|
|
@@ -148,21 +149,70 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
}
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
|
- public Integer updateMergePerson(MergePersonVO vo) {
|
|
|
+ public Integer updateMergePerson(MergePersonVO vo) throws IOException {
|
|
|
//获取登陆人信息 用于设置创建人
|
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
|
+ Integer type = vo.getType();
|
|
|
try {
|
|
|
personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
} catch (Exception e) {
|
|
|
throw new UnLoginException("未登录");
|
|
|
}
|
|
|
MergePerson person = this.getById(vo.getId());
|
|
|
+ String mergedName = person.getMergedName();
|
|
|
+ String name = person.getName();
|
|
|
if (ObjectUtil.isNotEmpty(person)) {
|
|
|
BeanUtils.copyProperties(vo, person);
|
|
|
+ person.setMergedName(JSONArray.toJSONString(vo.getMergedName()));
|
|
|
person.setCreateId(personnelVO.getId());
|
|
|
person.setCreateTime(new Date());
|
|
|
person.updateById();
|
|
|
- //todo 关联相关专利
|
|
|
+
|
|
|
+ List<String> mergedNames = JSONArray.parseArray(mergedName, String.class);
|
|
|
+ SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
|
+ //设置查询索引
|
|
|
+ builder.index("patent");
|
|
|
+
|
|
|
+ List<Query> queries = new ArrayList<>();
|
|
|
+ if (type == 0) {
|
|
|
+ for (String merged : mergedNames) {
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("applicant.name").value(merged));
|
|
|
+ Query query = QueryBuilders.nested(i -> i.path("applicant").query(q));
|
|
|
+ queries.add(query);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (String merged : mergedNames) {
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("inventor.name").value(merged));
|
|
|
+ Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
|
|
|
+ queries.add(query);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Query query = QueryBuilders.bool(i -> i.should(queries));
|
|
|
+ builder.query(query);
|
|
|
+ SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
|
+ List<Hit<Patent>> hits = response.hits().hits();
|
|
|
+ Map<String, Patent> map = new HashMap<>();
|
|
|
+ for (Hit<Patent> hit : hits) {
|
|
|
+ String id = hit.id();
|
|
|
+ map.put(id, hit.source());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(map)) {
|
|
|
+ for (String id : map.keySet()) {
|
|
|
+ Patent patent = map.get(id);
|
|
|
+ List<PatentMergePerson> mergeApplicants = patent.getMergeApplicant();
|
|
|
+ if (!name.equals(vo.getName())) {
|
|
|
+ for (PatentMergePerson mergeApplicant : mergeApplicants) {
|
|
|
+ if (mergeApplicant.getName().equals(name)) {
|
|
|
+ mergeApplicant.setName(vo.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ patent.setMergeApplicant(mergeApplicants);
|
|
|
+ patent.setMergeRightHolder(mergeApplicants);
|
|
|
+ esService.updateMergePerson(patent, id);
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
person = new MergePerson();
|
|
|
}
|
|
@@ -173,6 +223,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
List<MergePersonQueryDTO> list = new ArrayList<>();
|
|
|
IPage<MergePerson> page = new Page<>(vo.getPageNum(), vo.getPageSize());
|
|
|
LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
|
+ .eq(MergePerson::getProjectId, vo.getProjectId())
|
|
|
+ .eq(MergePerson::getType, vo.getType())
|
|
|
.eq(StringUtils.isNotEmpty(vo.getCountry()), MergePerson::getCountry, vo.getCountry())
|
|
|
.like(StringUtils.isNotEmpty(vo.getName()), MergePerson::getName, vo.getName());
|
|
|
IPage<MergePerson> record = mergePersonMapper.selectPage(page, wrapper);
|
|
@@ -284,7 +336,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
int size = applicantDTOS.size();
|
|
|
records.setData(applicantDTOS.stream().limit(vo.getPageSize()).collect(Collectors.toList()));
|
|
|
if (total >= size) {
|
|
|
- records.setTotal((long)size);
|
|
|
+ records.setTotal((long) size);
|
|
|
} else {
|
|
|
records.setTotal(total);
|
|
|
}
|
|
@@ -292,7 +344,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
int size = inventorDTOS.size();
|
|
|
records.setData(inventorDTOS.stream().limit(vo.getPageSize()).collect(Collectors.toList()));
|
|
|
if (total >= size) {
|
|
|
- records.setTotal((long)size);
|
|
|
+ records.setTotal((long) size);
|
|
|
} else {
|
|
|
records.setTotal(total);
|
|
|
}
|
|
@@ -300,12 +352,37 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
return records;
|
|
|
}
|
|
|
|
|
|
- public Integer delMergePerson(MergePersonIdVO vo) {
|
|
|
- LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
|
- .eq(BaseEntity::getId, vo.getId());
|
|
|
- this.remove(wrapper);
|
|
|
+ public Integer delMergePerson(MergePersonIdVO vo) throws IOException {
|
|
|
+ Integer type = vo.getType();
|
|
|
+ MergePerson mergePerson = mergePersonMapper.selectById(vo.getId());
|
|
|
+ if (ObjectUtil.isNotEmpty(mergePerson)) {
|
|
|
+ LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
|
+ .eq(BaseEntity::getId, vo.getId());
|
|
|
+ this.remove(wrapper);
|
|
|
+
|
|
|
+ //todo 删掉相关合并的名称
|
|
|
+ SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
|
+ //设置查询索引
|
|
|
+ builder.index("patent");
|
|
|
|
|
|
- //todo 删掉相关合并的名称
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("merge_applicant.name").value(mergePerson.getName()));
|
|
|
+ Query query = QueryBuilders.nested(i -> i.path("merge_applicant").query(q));
|
|
|
+ builder.query(query);
|
|
|
+ SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
|
+ List<Hit<Patent>> hits = response.hits().hits();
|
|
|
+ Map<String, Patent> map = new HashMap<>();
|
|
|
+ for (Hit<Patent> hit : hits) {
|
|
|
+ String id = hit.id();
|
|
|
+ map.put(id, hit.source());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(map)) {
|
|
|
+ for (String id : map.keySet()) {
|
|
|
+ Patent patent = map.get(id);
|
|
|
+ esService.delMergePerson(patent, id, type,mergePerson.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return vo.getId();
|
|
|
}
|
|
|
}
|