Merge remote-tracking branch 'origin/dev_1.0.0' into dev_1.0.0

topo_dev
xueqingkun 9 months ago
commit 7496be7d81

@ -1,5 +1,6 @@
package com.supervision.neo4j.controller;
import cn.hutool.core.util.ObjectUtil;
import com.supervision.common.domain.R;
import com.supervision.neo4j.domain.CaseNode;
import com.supervision.neo4j.domain.Rel;
@ -78,8 +79,8 @@ public class Neo4jController {
@PostMapping("/saveRelation")
public R<?> saveRelation(@RequestBody Rel rel) {
Boolean result = neo4jService.saveRelation(rel);
return R.judgeResult(result, null, "保存失败");
Rel rel1 = neo4jService.saveRelation(rel);
return R.judgeResult(ObjectUtil.isNotEmpty(rel1), null, "保存失败");
}
/*************************************************************************************/

@ -16,6 +16,11 @@ public interface Neo4jService {
void delNode(Long id);
/**
*
*/
void deleteNoRelationNode(Long id);
void deleteRel(Long relId);
CaseNode findById(Long id);
@ -26,7 +31,7 @@ public interface Neo4jService {
Rel findRelation(Rel rel);
Boolean saveRelation(Rel rel);
Rel saveRelation(Rel rel);
R<?> getNode(String picType, String caseId);

@ -1,6 +1,7 @@
package com.supervision.neo4j.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.supervision.common.domain.R;
@ -98,6 +99,23 @@ public class Neo4jServiceImpl implements Neo4jService {
}
}
@Override
public void deleteNoRelationNode(Long id) {
try {
Session session = driver.session();
StringBuffer cql = new StringBuffer();
cql.append("MATCH (n) WHERE n.id = " ).append(id).append(" AND NOT (n)--() DELETE n");
log.info(cql.toString());
Result run = session.run(cql.toString());
while (run.hasNext()) {
Record next = run.next();
// log.info(next.toString());
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
/**
*
*
@ -234,7 +252,7 @@ public class Neo4jServiceImpl implements Neo4jService {
}
@Override
public Boolean saveRelation(Rel rel) {
public Rel saveRelation(Rel rel) {
Rel res = null;
try {
Session session = driver.session();
@ -250,7 +268,7 @@ public class Neo4jServiceImpl implements Neo4jService {
} catch (Exception e) {
e.printStackTrace();
}
return rel != null;
return rel;
}
@Override

@ -71,6 +71,11 @@ public class TripleInfo implements Serializable {
*/
private Long startNodeGraphId;
/**
* ID(neo4jid)
*/
private Long relGraphId;
/**
* neo4jID
*/

@ -1,6 +1,7 @@
package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -431,20 +432,61 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
Rel rel = new Rel(startNode.getId(), tripleInfo.getRelation(), endNode.getId());
Rel relation = neo4jService.findRelation(rel);
if (relation == null) {
neo4jService.saveRelation(rel);
relation = neo4jService.saveRelation(rel);
}
tripleInfo.setAddNeo4j("1");
tripleInfo.setStartNodeGraphId(startNode.getId());
tripleInfo.setRelGraphId(relation.getId());
tripleInfo.setEndNodeGraphId(endNode.getId());
boolean updateResult = tripleInfoService.updateById(tripleInfo);
if (updateResult) {
i++;
}
// TODO 重复添加的OK了,删除的呢?
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
// 删除的要进行移除
Optional<TripleInfo> any = tripleInfos.stream().findAny();
if (any.isPresent()) {
TripleInfo anyTripleInfo = any.get();
String recordId = anyTripleInfo.getRecordId();
List<TripleInfo> existNeoList = tripleInfoService.lambdaQuery().eq(TripleInfo::getRecordId, recordId).eq(TripleInfo::getAddNeo4j, "1").list();
Map<String, TripleInfo> existNeoMap = existNeoList.stream().collect(Collectors.toMap(TripleInfo::getId, Function.identity()));
// 去掉已经添加的
Set<String> existNeoIdSet = existNeoMap.keySet();
ids.forEach(existNeoIdSet::remove);
// 剩下的就是需要删除的
for (String needDeleteId : existNeoIdSet) {
TripleInfo tripleInfo = existNeoMap.get(needDeleteId);
if (ObjectUtil.isNotEmpty(tripleInfo.getRelGraphId())) {
// 先移除关系
neo4jService.deleteRel(tripleInfo.getRelGraphId());
} else {
break;
}
if (ObjectUtil.isNotEmpty(tripleInfo.getStartNodeGraphId())) {
// 再移除尾节点
neo4jService.delNode(tripleInfo.getEndNodeGraphId());
} else {
break;
}
if (ObjectUtil.isNotEmpty(tripleInfo.getEndNodeGraphId())) {
// 尝试删除头节点(只有头节点不存在任何关系的时候才进行删除)
neo4jService.deleteNoRelationNode(tripleInfo.getStartNodeGraphId());
} else {
break;
}
// 更新状态
tripleInfoService.lambdaUpdate().set(TripleInfo::getAddNeo4j, "0")
.set(TripleInfo::getEndNodeGraphId, null)
.set(TripleInfo::getRelGraphId, null)
.set(TripleInfo::getStartNodeGraphId, null)
.eq(TripleInfo::getId, needDeleteId).update();
}
}
return ("成功插入" + i + "条信息");
}
}

@ -308,6 +308,8 @@ public class ModelServiceImpl implements ModelService {
if (ql.contains("$lawParty") && split.length > 1) {
i = split.length;
}
// 只有有符合的,就认为符合,不进行遍历了
judge:
for (int j = 0; j < i; j++) {
if (split.length > 0) {
params.put("lawParty", split[j]);
@ -324,15 +326,18 @@ public class ModelServiceImpl implements ModelService {
if (res.isEmpty()) {
result.setAtomicResult("-1");
} else {
ResultDTO resultDTO = res.get(0);
if (StringUtils.isNotEmpty(resultDTO.getRelId())) {
//存在关系
result.setAtomicResult("1");
result.setRecordSplitId(resultDTO.getRecordSplitId());
result.setRecordId(resultDTO.getRecordId());
break;
} else {
result.setAtomicResult("0");
// 设置为0,不符合
result.setAtomicResult("0");
// 进行遍历,如果有存在的,就设置为有
for (ResultDTO resultDTO : res) {
if (StringUtils.isNotEmpty(resultDTO.getRelId())) {
//存在关系
result.setAtomicResult("1");
result.setRecordSplitId(resultDTO.getRecordSplitId());
result.setRecordId(resultDTO.getRecordId());
// 如果只要存在,就不进行校验了,直接跳出循环
break judge;
}
}
}
}

Loading…
Cancel
Save