|
@@ -11,10 +11,7 @@ import cn.cslg.pas.common.utils.LoginUtils;
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
|
|
import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
|
|
-import cn.cslg.pas.common.vo.business.GetAllPersonVO;
|
|
|
|
-import cn.cslg.pas.common.vo.business.MergePersonIdVO;
|
|
|
|
-import cn.cslg.pas.common.vo.business.MergePersonQueryVO;
|
|
|
|
-import cn.cslg.pas.common.vo.business.MergePersonVO;
|
|
|
|
|
|
+import cn.cslg.pas.common.vo.business.*;
|
|
import cn.cslg.pas.domain.BaseEntity;
|
|
import cn.cslg.pas.domain.BaseEntity;
|
|
import cn.cslg.pas.domain.business.FollowUp;
|
|
import cn.cslg.pas.domain.business.FollowUp;
|
|
import cn.cslg.pas.domain.business.MergePerson;
|
|
import cn.cslg.pas.domain.business.MergePerson;
|
|
@@ -81,7 +78,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
private EsService esService;
|
|
private EsService esService;
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
- public Integer mergePerson(MergePersonVO vo) throws IOException {
|
|
|
|
|
|
+ public Integer mergePerson(MergePersonVO vo) throws Exception {
|
|
Integer type = vo.getType();
|
|
Integer type = vo.getType();
|
|
List<String> mergedNames = vo.getMergedName();
|
|
List<String> mergedNames = vo.getMergedName();
|
|
//获取登陆人信息 用于设置创建人
|
|
//获取登陆人信息 用于设置创建人
|
|
@@ -91,6 +88,15 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new UnLoginException("未登录");
|
|
throw new UnLoginException("未登录");
|
|
}
|
|
}
|
|
|
|
+ //判断是否名称重复
|
|
|
|
+ LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
|
|
+ .eq(MergePerson::getProjectId, vo.getProjectId())
|
|
|
|
+ .eq(MergePerson::getName, vo.getName());
|
|
|
|
+ List<MergePerson> list = mergePersonMapper.selectList(wrapper);
|
|
|
|
+ if (list.size() > 1) {
|
|
|
|
+ throw new Exception("合并名称不可重复");
|
|
|
|
+ }
|
|
|
|
+
|
|
MergePerson person = new MergePerson();
|
|
MergePerson person = new MergePerson();
|
|
BeanUtils.copyProperties(vo, person);
|
|
BeanUtils.copyProperties(vo, person);
|
|
person.setMergedName(JSONArray.toJSONString(mergedNames));
|
|
person.setMergedName(JSONArray.toJSONString(mergedNames));
|
|
@@ -105,13 +111,16 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
List<Query> queries = new ArrayList<>();
|
|
List<Query> queries = new ArrayList<>();
|
|
if (type == 0) {
|
|
if (type == 0) {
|
|
for (String mergedName : mergedNames) {
|
|
for (String mergedName : mergedNames) {
|
|
- Query q = QueryBuilders.term(i -> i.field("applicant.name").value(mergedName));
|
|
|
|
- Query query = QueryBuilders.nested(i -> i.path("applicant").query(q));
|
|
|
|
- queries.add(query);
|
|
|
|
|
|
+ Query q1 = QueryBuilders.term(i -> i.field("applicant.name.key").value(mergedName));
|
|
|
|
+ Query query1 = QueryBuilders.nested(i -> i.path("applicant").query(q1));
|
|
|
|
+ Query q2 = QueryBuilders.term(i -> i.field("right_holder.name.key").value(mergedName));
|
|
|
|
+ Query query2 = QueryBuilders.nested(i -> i.path("right_holder").query(q2));
|
|
|
|
+ queries.add(query1);
|
|
|
|
+ queries.add(query2);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
for (String mergedName : mergedNames) {
|
|
for (String mergedName : mergedNames) {
|
|
- Query q = QueryBuilders.term(i -> i.field("inventor.name").value(mergedName));
|
|
|
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("inventor.name.key").value(mergedName));
|
|
Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
|
|
Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
|
|
queries.add(query);
|
|
queries.add(query);
|
|
}
|
|
}
|
|
@@ -138,7 +147,6 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
for (String id : map.keySet()) {
|
|
for (String id : map.keySet()) {
|
|
Patent patent = map.get(id);
|
|
Patent patent = map.get(id);
|
|
List<PatentMergePerson> mergeApplicants = patent.getMergeApplicant();
|
|
List<PatentMergePerson> mergeApplicants = patent.getMergeApplicant();
|
|
- List<String> Names = mergeApplicants.stream().map(PatentMergePerson::getName).collect(Collectors.toList());
|
|
|
|
mergePersonList.addAll(mergeApplicants);
|
|
mergePersonList.addAll(mergeApplicants);
|
|
patent.setMergeApplicant(mergePersonList);
|
|
patent.setMergeApplicant(mergePersonList);
|
|
patent.setMergeRightHolder(mergePersonList);
|
|
patent.setMergeRightHolder(mergePersonList);
|
|
@@ -149,7 +157,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
}
|
|
}
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
- public Integer updateMergePerson(MergePersonVO vo) throws IOException {
|
|
|
|
|
|
+ public Integer updateMergePerson(MergePersonVO vo) throws Exception {
|
|
//获取登陆人信息 用于设置创建人
|
|
//获取登陆人信息 用于设置创建人
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
PersonnelVO personnelVO = new PersonnelVO();
|
|
Integer type = vo.getType();
|
|
Integer type = vo.getType();
|
|
@@ -158,9 +166,19 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new UnLoginException("未登录");
|
|
throw new UnLoginException("未登录");
|
|
}
|
|
}
|
|
|
|
+ //判断是否名称重复
|
|
|
|
+ LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
|
|
+ .eq(MergePerson::getProjectId, vo.getProjectId())
|
|
|
|
+ .eq(MergePerson::getName, vo.getName());
|
|
|
|
+ List<MergePerson> list = mergePersonMapper.selectList(wrapper);
|
|
|
|
+ if (list.size() > 1) {
|
|
|
|
+ throw new Exception("合并名称不可重复");
|
|
|
|
+ }
|
|
|
|
+ //获取老专利
|
|
MergePerson person = this.getById(vo.getId());
|
|
MergePerson person = this.getById(vo.getId());
|
|
String mergedName = person.getMergedName();
|
|
String mergedName = person.getMergedName();
|
|
String name = person.getName();
|
|
String name = person.getName();
|
|
|
|
+
|
|
if (ObjectUtil.isNotEmpty(person)) {
|
|
if (ObjectUtil.isNotEmpty(person)) {
|
|
BeanUtils.copyProperties(vo, person);
|
|
BeanUtils.copyProperties(vo, person);
|
|
person.setMergedName(JSONArray.toJSONString(vo.getMergedName()));
|
|
person.setMergedName(JSONArray.toJSONString(vo.getMergedName()));
|
|
@@ -176,13 +194,16 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
List<Query> queries = new ArrayList<>();
|
|
List<Query> queries = new ArrayList<>();
|
|
if (type == 0) {
|
|
if (type == 0) {
|
|
for (String merged : mergedNames) {
|
|
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);
|
|
|
|
|
|
+ Query q1 = QueryBuilders.term(i -> i.field("applicant.name.key").value(merged));
|
|
|
|
+ Query query1 = QueryBuilders.nested(i -> i.path("applicant").query(q1));
|
|
|
|
+ Query q2 = QueryBuilders.term(i -> i.field("right_holder.name.key").value(merged));
|
|
|
|
+ Query query2 = QueryBuilders.nested(i -> i.path("right_holder").query(q2));
|
|
|
|
+ queries.add(query1);
|
|
|
|
+ queries.add(query2);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
for (String merged : mergedNames) {
|
|
for (String merged : mergedNames) {
|
|
- Query q = QueryBuilders.term(i -> i.field("inventor.name").value(merged));
|
|
|
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("inventor.name.key").value(merged));
|
|
Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
|
|
Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
|
|
queries.add(query);
|
|
queries.add(query);
|
|
}
|
|
}
|
|
@@ -231,9 +252,12 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
for (MergePerson person : record.getRecords()) {
|
|
for (MergePerson person : record.getRecords()) {
|
|
MergePersonQueryDTO dto = new MergePersonQueryDTO();
|
|
MergePersonQueryDTO dto = new MergePersonQueryDTO();
|
|
dto.setId(person.getId());
|
|
dto.setId(person.getId());
|
|
|
|
+ dto.setProjectId(person.getProjectId());
|
|
|
|
+ dto.setType(person.getType());
|
|
dto.setName(person.getName());
|
|
dto.setName(person.getName());
|
|
dto.setAddress(person.getAddress());
|
|
dto.setAddress(person.getAddress());
|
|
dto.setCountry(person.getCountry());
|
|
dto.setCountry(person.getCountry());
|
|
|
|
+ dto.setProvince(person.getProvince());
|
|
dto.setRemark(person.getRemark());
|
|
dto.setRemark(person.getRemark());
|
|
dto.setAbbreviation(person.getAbbreviation());
|
|
dto.setAbbreviation(person.getAbbreviation());
|
|
dto.setCreateTime(person.getCreateTime());
|
|
dto.setCreateTime(person.getCreateTime());
|
|
@@ -249,6 +273,17 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
return records;
|
|
return records;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public MergePersonQueryDTO selectMergePersonDetail(MergePersonIdVO vo) {
|
|
|
|
+ MergePersonQueryDTO dto = new MergePersonQueryDTO();
|
|
|
|
+ MergePerson person = mergePersonMapper.selectById(vo.getId());
|
|
|
|
+ if (ObjectUtil.isNotEmpty(person)) {
|
|
|
|
+ BeanUtils.copyProperties(person, dto);
|
|
|
|
+ List<String> names = JSONArray.parseArray(person.getMergedName(), String.class);
|
|
|
|
+ dto.setMergedName(names);
|
|
|
|
+ }
|
|
|
|
+ return dto;
|
|
|
|
+ }
|
|
|
|
+
|
|
public Records getMergePerson(GetAllPersonVO vo) throws Exception {
|
|
public Records getMergePerson(GetAllPersonVO vo) throws Exception {
|
|
Integer projectId = vo.getProjectId();
|
|
Integer projectId = vo.getProjectId();
|
|
Integer taskId = vo.getTaskId();
|
|
Integer taskId = vo.getTaskId();
|
|
@@ -258,7 +293,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
String searchCondition = "";
|
|
String searchCondition = "";
|
|
if (type == 0 && StringUtils.isNotEmpty(vo.getName())) {
|
|
if (type == 0 && StringUtils.isNotEmpty(vo.getName())) {
|
|
searchCondition = searchCondition + "PA = " + vo.getName();
|
|
searchCondition = searchCondition + "PA = " + vo.getName();
|
|
- } else if (type == 2 && StringUtils.isNotEmpty(vo.getName())){
|
|
|
|
|
|
+ } else if (type == 2 && StringUtils.isNotEmpty(vo.getName())) {
|
|
searchCondition = searchCondition + "IN = " + vo.getName();
|
|
searchCondition = searchCondition + "IN = " + vo.getName();
|
|
}
|
|
}
|
|
if (taskId != null) {
|
|
if (taskId != null) {
|
|
@@ -369,21 +404,96 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
return records;
|
|
return records;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public Integer delMergedName(MergedNameVO vo) throws IOException {
|
|
|
|
+ Integer type = vo.getType();
|
|
|
|
+ String delName = vo.getDelName();
|
|
|
|
+ String name = vo.getName();
|
|
|
|
+ Integer projectId = vo.getProjectId();
|
|
|
|
+ MergePerson mergePerson = mergePersonMapper.selectOne(new LambdaQueryWrapper<MergePerson>()
|
|
|
|
+ .eq(MergePerson::getMergedName, name)
|
|
|
|
+ .eq(MergePerson::getProjectId, projectId));
|
|
|
|
+ if (ObjectUtil.isNotEmpty(mergePerson)) {
|
|
|
|
+ Integer personId = mergePerson.getId();
|
|
|
|
+ String mergedName = mergePerson.getMergedName();
|
|
|
|
+ List<String> list = JSONArray.parseArray(mergedName, String.class);
|
|
|
|
+ list.remove(delName);
|
|
|
|
+ MergePerson person = mergePersonMapper.selectById(personId);
|
|
|
|
+ person.setMergedName(JSONArray.toJSONString(list));
|
|
|
|
+ person.updateById();
|
|
|
|
+
|
|
|
|
+ SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
|
|
+ //设置查询索引
|
|
|
|
+ builder.index("patent");
|
|
|
|
+ List<Query> queries = new ArrayList<>();
|
|
|
|
+ List<Query> mustQueries = new ArrayList<>();
|
|
|
|
+ if (type == 0) {
|
|
|
|
+ Query q1 = QueryBuilders.term(i -> i.field("applicant.name.key").value(delName));
|
|
|
|
+ Query query1 = QueryBuilders.nested(i -> i.path("applicant").query(q1));
|
|
|
|
+ Query q2 = QueryBuilders.term(i -> i.field("right_holder.name.key").value(delName));
|
|
|
|
+ Query query2 = QueryBuilders.nested(i -> i.path("right_holder").query(q2));
|
|
|
|
+ queries.add(query1);
|
|
|
|
+ queries.add(query2);
|
|
|
|
+ Query q3 = QueryBuilders.term(i -> i.field("merge_applicant.name.raw").value(name));
|
|
|
|
+ Query query3 = QueryBuilders.nested(i -> i.path("merge_applicant").query(q3));
|
|
|
|
+ Query q4 = QueryBuilders.term(i -> i.field("merge_right_holder.name.raw").value(name));
|
|
|
|
+ Query query4 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(q4));
|
|
|
|
+ mustQueries.add(query3);
|
|
|
|
+ mustQueries.add(query4);
|
|
|
|
+ } else {
|
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("inventor.name.key").value(delName));
|
|
|
|
+ Query query = QueryBuilders.nested(i -> i.path("inventor").query(q));
|
|
|
|
+ queries.add(query);
|
|
|
|
+ Query q1 = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
|
|
|
|
+ Query query1 = QueryBuilders.nested(i -> i.path("merge_inventor").query(q1));
|
|
|
|
+ queries.add(query1);
|
|
|
|
+ }
|
|
|
|
+ Query query = QueryBuilders.bool(i -> i.must(mustQueries).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);
|
|
|
|
+ esService.delMergePerson(patent, id, type, mergePerson.getName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return mergePerson.getId();
|
|
|
|
+ }
|
|
|
|
+
|
|
public Integer delMergePerson(MergePersonIdVO vo) throws IOException {
|
|
public Integer delMergePerson(MergePersonIdVO vo) throws IOException {
|
|
Integer type = vo.getType();
|
|
Integer type = vo.getType();
|
|
MergePerson mergePerson = mergePersonMapper.selectById(vo.getId());
|
|
MergePerson mergePerson = mergePersonMapper.selectById(vo.getId());
|
|
|
|
+ String name = mergePerson.getName();
|
|
if (ObjectUtil.isNotEmpty(mergePerson)) {
|
|
if (ObjectUtil.isNotEmpty(mergePerson)) {
|
|
LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
|
|
.eq(BaseEntity::getId, vo.getId());
|
|
.eq(BaseEntity::getId, vo.getId());
|
|
this.remove(wrapper);
|
|
this.remove(wrapper);
|
|
|
|
|
|
- //todo 删掉相关合并的名称
|
|
|
|
SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
//设置查询索引
|
|
//设置查询索引
|
|
builder.index("patent");
|
|
builder.index("patent");
|
|
-
|
|
|
|
- Query q = QueryBuilders.term(i -> i.field("merge_applicant.name").value(mergePerson.getName()));
|
|
|
|
- Query query = QueryBuilders.nested(i -> i.path("merge_applicant").query(q));
|
|
|
|
|
|
+ List<Query> queries = new ArrayList<>();
|
|
|
|
+ if (type == 0) {
|
|
|
|
+ Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.name.raw").value(name));
|
|
|
|
+ Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(q1));
|
|
|
|
+ Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.name.raw").value(name));
|
|
|
|
+ Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(q2));
|
|
|
|
+ queries.add(query1);
|
|
|
|
+ queries.add(query2);
|
|
|
|
+ } else {
|
|
|
|
+ Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
|
|
|
|
+ Query query3 = QueryBuilders.nested(i -> i.path("merge_inventor").query(q));
|
|
|
|
+ queries.add(query3);
|
|
|
|
+ }
|
|
|
|
+ Query query = QueryBuilders.bool(i -> i.must(queries));
|
|
builder.query(query);
|
|
builder.query(query);
|
|
SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
List<Hit<Patent>> hits = response.hits().hits();
|
|
List<Hit<Patent>> hits = response.hits().hits();
|
|
@@ -396,7 +506,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
if (!CollectionUtils.isEmpty(map)) {
|
|
if (!CollectionUtils.isEmpty(map)) {
|
|
for (String id : map.keySet()) {
|
|
for (String id : map.keySet()) {
|
|
Patent patent = map.get(id);
|
|
Patent patent = map.get(id);
|
|
- esService.delMergePerson(patent, id, type,mergePerson.getName());
|
|
|
|
|
|
+ esService.delMergePerson(patent, id, type, mergePerson.getName());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|