1. 修复bug

topo_dev
xueqingkun 6 months ago
parent 3cadde1277
commit bdc9af0526

@ -265,17 +265,18 @@ public class CaseScoreDetailBuilder {
if (null == this.evidenceDirectoryDTO){
return new ArrayList<>();
}
// 结构化推理分类id 分类
List<String> categoryList = this.indexResultList.stream()
// 结构化推理分类id 只过滤不得分的指标
List<String> categoryList = this.indexResultList.stream().filter(indexResult -> indexResult.getActualScore() == 0)
.flatMap(indexResult -> indexResult.getAtomicResults().stream())
.filter(atomicResult -> StrUtil.equals(IndexRuleConstants.OPERAND_TYPE_STRUCTURE, atomicResult.getIndexSource()))
.map(AtomicResult::getCategoryId).filter(id -> !this.evidenceDirectoryDTO.categoryHasFile(id)).toList();
// 数据库查询分类id
List<String> list = this.indexResultList.stream().flatMap(indexResult -> indexResult.getAtomicResults().stream())
// 数据库查询分类id 只过滤不得分的指标
List<String> list = this.indexResultList.stream().filter(indexResult -> indexResult.getActualScore() == 0)
.flatMap(indexResult -> indexResult.getAtomicResults().stream())
.filter(atomicResult -> StrUtil.equals(IndexRuleConstants.OPERAND_TYPE_DB, atomicResult.getIndexSource()))
.filter(AtomicResult::resultIsTrue).map(AtomicResult::getCategoryId).filter(Objects::nonNull).toList();
.filter(r->!r.resultIsTrue()).map(AtomicResult::getCategoryId).filter(Objects::nonNull).toList();
List<String> all = new ArrayList<>(categoryList);
all.addAll(list);

@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

@ -255,7 +255,7 @@ public class ModelServiceImpl implements ModelService {
operandUnitResultSet.add(relationSymbol == manualIndexAnalysis(ruleCondition.getAtomicIndexId(), caseId));
break;
case OPERAND_TYPE_DB:
operandUnitResultSet.add(relationSymbol == dbIndexAnalysis(caseId, modelAtomicIndex.getQueryLang(), result));
operandUnitResultSet.add(relationSymbol == dbIndexAnalysis(caseId, modelAtomicIndex,evidenceDirectories, result));
break;
case OPERAND_TYPE_GRAPH:
operandUnitResultSet.add(relationSymbol == graphIndexAnalysis(casePerson.getName(), modelAtomicIndex.getQueryLang(), analyseCaseDTO.getCaseId(), ruleCondition, result));
@ -328,19 +328,19 @@ public class ModelServiceImpl implements ModelService {
/**
*
*
* @param caseId ID
* @param sql
* @param modelAtomicIndex
* @param evidenceDirectories
* @param atomicResult
* @return
* @return
*/
private boolean dbIndexAnalysis(String caseId, String sql, ModelAtomicResult atomicResult) {
private boolean dbIndexAnalysis(String caseId, ModelAtomicIndex modelAtomicIndex,List<EvidenceDirectory> evidenceDirectories, ModelAtomicResult atomicResult) {
Map<String, Object> params = new HashMap<>();
params.put("caseId", caseId);
List<Map> mapList = rowSqlMapper.selectList(sql, params, Map.class);
List<Map> mapList = rowSqlMapper.selectList(modelAtomicIndex.getQueryLang(), params, Map.class);
boolean flag = false;
if (mapList != null && !mapList.isEmpty()) {
flag = true;
flag = evidenceDirectories.stream().anyMatch(evidenceDirectory -> StrUtil.equals(evidenceDirectory.getCategoryId(), modelAtomicIndex.getCategoryId()));
String evidenceIds = mapList.stream().map(map -> map.get("id").toString()).collect(Collectors.joining(","));
atomicResult.setEvidenceId(evidenceIds);
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
@ -421,15 +421,20 @@ public class ModelServiceImpl implements ModelService {
ModelAtomicIndex modelAtomicIndex = atomicIndices.stream().filter(atomicIndex -> atomicIndex.getId().equals(modelAtomicIndexId)).findAny().orElse(null);
if (modelAtomicIndex == null) {
log.error("原子指标不存在。原子指标ID:{}", modelAtomicIndexId);
atomicResult.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return flag;
}
List<CaseEvidence> evidences = getEvidencesByPromptId(modelAtomicIndex.getPromptId(), caseEvidences, evidenceDirectories, notePrompts);
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
ModelAtomicIndex rightModelAtomicIndex = null;
if (OPERAND_TYPE_STRUCTURE.equals(right.getOperandType())) {
log.info("右操作数为结构化查询,提前查好对应的原子指标");
rightModelAtomicIndex = atomicIndices.stream().filter(atomicIndex -> atomicIndex.getId().equals(left.getAtomicIndexId())).findAny().orElse(null);
if (rightModelAtomicIndex == null || StringUtils.isEmpty(rightModelAtomicIndex.getPromptId())) {
log.error("原子指标不存在。原子指标ID:{}", left.getAtomicIndexId());
atomicResult.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return flag;
}
}
@ -440,14 +445,12 @@ public class ModelServiceImpl implements ModelService {
if (OPERAND_TYPE_STRUCTURE.equals(right.getOperandType())) {
List<CaseEvidence> rightEvidences = getEvidencesByPromptId(rightModelAtomicIndex.getPromptId(), caseEvidences, evidenceDirectories, notePrompts);
if (CalculationUtil.evaluateExpression(String.valueOf(getSumFromEvidences(left.getPropertyKey(), evidences)), operator, String.valueOf(getSumFromEvidences(right.getPropertyKey(), rightEvidences)))) {
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return true;
}
} else if (OPERAND_TYPE_VALUE.equals(right.getOperandType())) {
if (CalculationUtil.evaluateExpression(String.valueOf(getSumFromEvidences(left.getPropertyKey(), evidences)), operator, right.getValue())) {
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return true;
@ -458,14 +461,12 @@ public class ModelServiceImpl implements ModelService {
if (OPERAND_TYPE_STRUCTURE.equals(right.getOperandType())) {
List<CaseEvidence> rightEvidences = getEvidencesByPromptId(rightModelAtomicIndex.getPromptId(), caseEvidences, evidenceDirectories, notePrompts);
if (CalculationUtil.evaluateExpression(String.valueOf(evidences.size()), operator, String.valueOf(rightEvidences.size()))) {
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return true;
}
} else if (OPERAND_TYPE_VALUE.equals(right.getOperandType())) {
if (CalculationUtil.evaluateExpression(String.valueOf(evidences.size()), operator, right.getValue())) {
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return true;
@ -479,7 +480,6 @@ public class ModelServiceImpl implements ModelService {
Set<String> rightValueSet = getValueSetFromEvidences(right, rightEvidences);
// 使用CalculationUtil.evaluateExpression方法遍历比较leftValueSet和rightValueSet的任一值一旦有一个满足返回true则return true
if (leftValueSet.stream().anyMatch(leftValue -> rightValueSet.stream().anyMatch(rightValue -> CalculationUtil.evaluateExpression(leftValue, operator, rightValue)))) {
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return true;
@ -487,7 +487,6 @@ public class ModelServiceImpl implements ModelService {
} else if (OPERAND_TYPE_VALUE.equals(right.getOperandType())) {
Set<String> leftValueSet = getValueSetFromEvidences(left, evidences);
if (leftValueSet.stream().anyMatch(leftValue -> CalculationUtil.evaluateExpression(leftValue, operator, right.getValue()))) {
atomicResult.setEvidenceId(evidences.stream().map(CaseEvidence::getId).collect(Collectors.joining(",")));
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
return true;
@ -495,10 +494,14 @@ public class ModelServiceImpl implements ModelService {
}
break;
default:
atomicResult.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
break;
}
} else {
log.error("证据不存在。提示词ID:{}", modelAtomicIndex.getPromptId());
atomicResult.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
modelAtomicResultService.saveOrUpdate(atomicResult);
}
return flag;
}

Loading…
Cancel
Save