|
|
|
@ -177,27 +177,50 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
log.info("数据准备阶段");
|
|
|
|
|
String caseId = analyseCaseDTO.getCaseId();
|
|
|
|
|
Map<String, Integer> typeScoreMap = new HashMap<>();
|
|
|
|
|
// 查出案件信息
|
|
|
|
|
ModelCase modelCase = modelCaseMapper.selectById(caseId);
|
|
|
|
|
// 获取案件行为人ID
|
|
|
|
|
if (modelCase == null) {
|
|
|
|
|
log.error("未找到案件信息:【{}】", caseId);
|
|
|
|
|
return R.fail("未找到案件信息");
|
|
|
|
|
}
|
|
|
|
|
CasePerson casePerson = casePersonMapper.selectOne(new LambdaQueryWrapper<CasePerson>()
|
|
|
|
|
.eq(CasePerson::getCaseId, analyseCaseDTO.getCaseId())
|
|
|
|
|
.eq(CasePerson::getCaseActorFlag, 1)
|
|
|
|
|
.eq(CasePerson::getRoleCode, "1")
|
|
|
|
|
.eq(StrUtil.isNotEmpty(analyseCaseDTO.getLawActorName()), CasePerson::getName, analyseCaseDTO.getLawActorName()));
|
|
|
|
|
if (ObjectUtil.isEmpty(casePerson)) {
|
|
|
|
|
throw new RuntimeException("未找到的行为人" + analyseCaseDTO.getLawActorName());
|
|
|
|
|
log.error("未找到的行为人:【{}】", analyseCaseDTO.getLawActorName());
|
|
|
|
|
return R.fail("未找到的行为人");
|
|
|
|
|
}
|
|
|
|
|
// 查出指标信息
|
|
|
|
|
List<ModelIndex> modelIndices = modelIndexService.list(new LambdaQueryWrapper<ModelIndex>().eq(ModelIndex::getDataStatus, "1").eq(ModelIndex::getCaseType, modelCase.getCaseType()));
|
|
|
|
|
// 查出原子指标信息
|
|
|
|
|
if (modelIndices.isEmpty()) {
|
|
|
|
|
log.error("未找到指标信息:【{}】", modelCase.getCaseType());
|
|
|
|
|
return R.fail("未找到指标信息");
|
|
|
|
|
}
|
|
|
|
|
List<ModelAtomicIndex> atomicIndices = modelAtomicIndexMapper.selectByCaseType(modelCase.getCaseType());
|
|
|
|
|
// 查出提示词信息
|
|
|
|
|
if (atomicIndices.isEmpty()) {
|
|
|
|
|
log.error("未找到原子指标信息:【{}】", modelCase.getCaseType());
|
|
|
|
|
return R.fail("未找到原子指标信息");
|
|
|
|
|
}
|
|
|
|
|
List<NotePrompt> notePrompts = notePromptService.list(new LambdaQueryWrapper<NotePrompt>().eq(NotePrompt::getType, TYPE_STRUCTURAL_REASONING));
|
|
|
|
|
// 查出证据目录信息
|
|
|
|
|
if (notePrompts.isEmpty()) {
|
|
|
|
|
log.error("未找到提示词信息:【{}】", TYPE_STRUCTURAL_REASONING);
|
|
|
|
|
return R.fail("未找到提示词信息");
|
|
|
|
|
}
|
|
|
|
|
List<EvidenceDirectory> evidenceDirectories = evidenceDirectoryService.list(new LambdaQueryWrapper<EvidenceDirectory>().eq(EvidenceDirectory::getCaseId, caseId));
|
|
|
|
|
// 查出证据信息
|
|
|
|
|
if (evidenceDirectories.isEmpty()) {
|
|
|
|
|
log.error("未找到证据目录信息:【{}】", caseId);
|
|
|
|
|
return R.fail("未找到证据目录信息");
|
|
|
|
|
}
|
|
|
|
|
List<CaseEvidence> caseEvidences = caseEvidenceService.list(new LambdaQueryWrapper<CaseEvidence>().eq(CaseEvidence::getCaseId, caseId));
|
|
|
|
|
if (caseEvidences.isEmpty()) {
|
|
|
|
|
log.error("未找到证据信息:【{}】", caseId);
|
|
|
|
|
return R.fail("未找到证据信息");
|
|
|
|
|
}
|
|
|
|
|
List<ModelIndexAtomicRelation> modelIndexAtomicRelations = modelIndexAtomicRelationService.list();
|
|
|
|
|
if (modelIndexAtomicRelations.isEmpty()) {
|
|
|
|
|
log.error("未找到指标原子关系信息");
|
|
|
|
|
return R.fail("未找到指标原子关系信息");
|
|
|
|
|
}
|
|
|
|
|
log.info("开始计算指标结果");
|
|
|
|
|
// 遍历指标集合,处理每个指标的判断逻辑,得出结果
|
|
|
|
|
modelIndices.forEach(modelIndex -> {
|
|
|
|
@ -256,6 +279,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
ModelIndexResult modelIndexResult = new ModelIndexResult();
|
|
|
|
|
modelIndexResult.setCaseId(caseId);
|
|
|
|
|
modelIndexResult.setIndexId(modelIndex.getId());
|
|
|
|
|
modelIndexResult.setAtomicIds(modelIndexAtomicRelations.stream().filter(relation -> relation.getModelIndexId().equals(modelIndex.getId())).map(ModelIndexAtomicRelation::getAtomicIndexId).collect(Collectors.joining(",")));
|
|
|
|
|
ModelIndexResult exist = modelIndexResultMapper.selectByCaseIdAndIndexId(analyseCaseDTO.getCaseId(), modelIndex.getId());
|
|
|
|
|
if (exist != null) {
|
|
|
|
|
modelIndexResult.setId(exist.getId());
|
|
|
|
|