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

topo_dev
xueqingkun
commit 504309eed8

@ -96,7 +96,7 @@ public class RecordController {
@ApiOperation("将三元组信息保存到知识图谱")
@PostMapping("/addNeo4j")
public R<String> addNeo4j(@RequestBody ListDTO list) {
return R.ok(modelRecordTypeService.addNeo4j(list.getIds()));
return R.ok(modelRecordTypeService.addNeo4j(list.getIds(),list.getRecordId()));
}
/**

@ -9,4 +9,6 @@ public class ListDTO {
public List<String> ids;
private String recordId;
}

@ -57,7 +57,7 @@ public class NoteRecordDetailDTO {
/**
*
*/
private Integer confessionMaterial;
private String confessionMaterial;
/**
*
@ -100,7 +100,7 @@ public class NoteRecordDetailDTO {
this.personId = noteRecordDTO.getCasePersonId();
this.name = noteRecordDTO.getName();
this.role = noteRecordDTO.getRole();
this.confessionMaterial = noteRecordDTO.getConfessionMaterial();
this.confessionMaterial = String.valueOf(noteRecordDTO.getConfessionMaterial());
this.lawAsker = noteRecordDTO.getLawAsker();
this.confessionStartTime = noteRecordDTO.getConfessionStartTime();
this.confessionEndTime = noteRecordDTO.getConfessionEndTime();

@ -27,5 +27,5 @@ public interface ModelRecordTypeService extends IService<ModelRecordType> {
void testExtractThreeInfo();
String addNeo4j(List<String> ids);
String addNeo4j(List<String> ids,String recordId);
}

@ -403,90 +403,86 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
@Override
public String addNeo4j(List<String> ids) {
if (CollUtil.isEmpty(ids)) {
return "成功插入0条信息";
public String addNeo4j(List<String> ids, String recordId) {
if (StrUtil.isBlank(recordId)){
throw new BusinessException("记录ID不能为空");
}
List<TripleInfo> tripleInfos = tripleInfoService.listByIds(ids);
int i = 0;
for (TripleInfo tripleInfo : tripleInfos) {
try {
//开始节点
String start = tripleInfo.getStartNode();
// 首先看是否已经存在了,如果已经存在了,就不添加了
CaseNode startNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getStartNodeType(), start, "1");
if (startNode == null) {
startNode = new CaseNode(start, tripleInfo.getStartNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1");
CaseNode save = neo4jService.save(startNode);
startNode.setId(save.getId());
}
//结束节点
String end = tripleInfo.getEndNode();
CaseNode endNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getEndNodeType(), end, "1");
if (endNode == null) {
endNode = new CaseNode(end, tripleInfo.getEndNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1");
CaseNode save = neo4jService.save(endNode);
endNode.setId(save.getId());
}
//关系
Rel rel = new Rel(startNode.getId(), tripleInfo.getRelation(), endNode.getId());
Rel relation = neo4jService.findRelation(rel);
if (relation == null) {
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++;
if (CollUtil.isNotEmpty(ids)) {
List<TripleInfo> tripleInfos = tripleInfoService.listByIds(ids);
int i = 0;
for (TripleInfo tripleInfo : tripleInfos) {
try {
//开始节点
String start = tripleInfo.getStartNode();
// 首先看是否已经存在了,如果已经存在了,就不添加了
CaseNode startNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getStartNodeType(), start, "1");
if (startNode == null) {
startNode = new CaseNode(start, tripleInfo.getStartNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1");
CaseNode save = neo4jService.save(startNode);
startNode.setId(save.getId());
}
//结束节点
String end = tripleInfo.getEndNode();
CaseNode endNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getEndNodeType(), end, "1");
if (endNode == null) {
endNode = new CaseNode(end, tripleInfo.getEndNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1");
CaseNode save = neo4jService.save(endNode);
endNode.setId(save.getId());
}
//关系
Rel rel = new Rel(startNode.getId(), tripleInfo.getRelation(), endNode.getId());
Rel relation = neo4jService.findRelation(rel);
if (relation == null) {
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++;
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} 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.getEndNodeGraphId())) {
// 再移除尾节点
neo4jService.delNode(tripleInfo.getEndNodeGraphId());
} else {
break;
}
if (ObjectUtil.isNotEmpty(tripleInfo.getStartNodeGraphId())) {
// 尝试删除头节点(只有头节点不存在任何关系的时候才进行删除)
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();
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.getEndNodeGraphId())) {
// 再移除尾节点
neo4jService.delNode(tripleInfo.getEndNodeGraphId());
} else {
break;
}
if (ObjectUtil.isNotEmpty(tripleInfo.getStartNodeGraphId())) {
// 尝试删除头节点(只有头节点不存在任何关系的时候才进行删除)
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 + "条信息");
return "保存三元组成功";
}
}

@ -21,6 +21,7 @@ import com.supervision.minio.service.MinioService;
import com.supervision.neo4j.service.Neo4jService;
import com.supervision.police.domain.*;
import com.supervision.police.dto.NoteRecordDTO;
import com.supervision.police.dto.NoteRecordFileDTO;
import com.supervision.police.vo.NoteRecordReqVO;
import com.supervision.police.dto.NoteRecordDetailDTO;
import com.supervision.police.mapper.NoteRecordSplitMapper;
@ -86,7 +87,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
public String uploadRecords(NoteRecordReqVO records) throws IOException {
int i;
ModelCase modelCase = modelCaseService.getById(records.getCaseId());
if (StringUtils.isEmpty(modelCase.getCaseNo())){
if (StringUtils.isEmpty(modelCase.getCaseNo())) {
throw new BusinessException("案件编号不能为空");
}
NoteRecord record = records.toNoteRecord();
@ -111,7 +112,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
}
String context = WordReadUtil.readWord(inputStream);
List<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, record.getName());
log.info("拆分问答对:{}",qaList.size());
log.info("拆分问答对:{}", qaList.size());
List<NoteRecordSplit> splitList = new ArrayList<>();
for (QARecordNodeDTO qa : qaList) {
try {
@ -152,7 +153,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
* @param recordId
* @return , true, , false
*/
private boolean saveRecordProcessTask(String caseId, String recordId,Integer splitSize) {
private boolean saveRecordProcessTask(String caseId, String recordId, Integer splitSize) {
// 首先查询是否存在任务,如果不存在,就新建
Optional<CaseTaskRecord> caseTaskRecordOpt = caseTaskRecordService.lambdaQuery()
.eq(CaseTaskRecord::getCaseId, caseId).eq(CaseTaskRecord::getRecordId, recordId).oneOpt();
@ -172,7 +173,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
newCaseTaskRecord.setSubmitTime(LocalDateTime.now());
caseTaskRecordService.save(newCaseTaskRecord);
return false;
}else {
} else {
// 如果存在,则校验时间是否已经超过1天,如果超过了1天还没有执行完毕,就重新提交这个任务
CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get();
// 如果未执行,则提交执行
@ -241,7 +242,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
// 从key中获取noteRecordDetailDTO需要的数据
List<NoteRecordDetailDTO> noteRecordDetailDTOS = nameMap.get(name);
NoteRecordDetailDTO first = CollUtil.getFirst(noteRecordDetailDTOS);
if (Objects.nonNull(first)){
if (Objects.nonNull(first)) {
noteRecordDetailDTO.setPersonId(first.getPersonId());
noteRecordDetailDTO.setRole(first.getRole());
noteRecordDetailDTO.setRoleName(caseRoleDicMap.get(first.getRole()));
@ -251,6 +252,9 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
int fileCount = 0;
for (NoteRecordDetailDTO recordDetailDTO : noteRecordDetailDTOS) {
fileCount = fileCount + recordDetailDTO.getFileList().size();
// 获取文件的文件名称
Set<String> fileNameSet = recordDetailDTO.getFileList().stream().map(NoteRecordFileDTO::getFileName).collect(Collectors.toSet());
recordDetailDTO.setConfessionMaterial(CollUtil.join(fileNameSet, ";"));
CaseTaskRecord caseTaskRecord = taskRecordMap.get(recordDetailDTO.getId());
if (ObjectUtil.isNotEmpty(caseTaskRecord)) {
if (caseTaskRecord.getStatus() == 2) {
@ -271,7 +275,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
}
noteRecordDetailDTO.setChildren(noteRecordDetailDTOS);
// 统计所有children的文件数量
noteRecordDetailDTO.setConfessionMaterial(fileCount);
noteRecordDetailDTO.setConfessionMaterial(String.valueOf(fileCount));
res.add(noteRecordDetailDTO);
}
List<NoteRecordDetailDTO> pager = ListUtils.Pager(size, page, res);

Loading…
Cancel
Save