|
|
|
@ -224,7 +224,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
log.info("开始计算指标结果");
|
|
|
|
|
// 遍历指标集合,处理每个指标的判断逻辑,得出结果
|
|
|
|
|
modelIndices.forEach(modelIndex -> {
|
|
|
|
|
log.info("开始计算指标ID:{},指标名称:{}", modelIndex.getId(), modelIndex.getName());
|
|
|
|
|
log.info("开始计算指标【{}】,ID:{}", modelIndex.getId(), modelIndex.getName());
|
|
|
|
|
IndexRule indexRule = modelIndex.getIndexRule();
|
|
|
|
|
Set<Boolean> ruleConditionGroupResultList = new HashSet<>();
|
|
|
|
|
if (indexRule != null) {
|
|
|
|
@ -449,6 +449,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
switch (left.getAggregateType()) {
|
|
|
|
|
case AGGREGATE_TYPE_SUM:
|
|
|
|
|
if (OPERAND_TYPE_STRUCTURE.equals(right.getOperandType())) {
|
|
|
|
|
log.info("左操作数总和:【{}】,操作符:【{}】,右操作数:【{}】", getSumFromEvidences(left.getPropertyKey(), evidences), operator, right.getValue());
|
|
|
|
|
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.setAtomicResult(JudgeResultEnum.EXIST.getCode());
|
|
|
|
@ -456,6 +457,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
} else if (OPERAND_TYPE_VALUE.equals(right.getOperandType())) {
|
|
|
|
|
log.info("左操作数总和:【{}】,操作符:【{}】,右操作数:【{}】", getSumFromEvidences(left.getPropertyKey(), evidences), operator, right.getValue());
|
|
|
|
|
if (CalculationUtil.evaluateExpression(String.valueOf(getSumFromEvidences(left.getPropertyKey(), evidences)), operator, right.getValue())) {
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
|
|
|
|
|
modelAtomicResultService.saveOrUpdate(atomicResult);
|
|
|
|
@ -465,6 +467,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
break;
|
|
|
|
|
case AGGREGATE_TYPE_COUNT:
|
|
|
|
|
if (OPERAND_TYPE_STRUCTURE.equals(right.getOperandType())) {
|
|
|
|
|
log.info("左操作数数量:【{}】,操作符:【{}】,右操作数:【{}】", evidences.size(), operator, right.getValue());
|
|
|
|
|
List<CaseEvidence> rightEvidences = getEvidencesByPromptId(rightModelAtomicIndex.getPromptId(), caseEvidences, evidenceDirectories, notePrompts);
|
|
|
|
|
if (CalculationUtil.evaluateExpression(String.valueOf(evidences.size()), operator, String.valueOf(rightEvidences.size()))) {
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
|
|
|
|
@ -472,6 +475,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
} else if (OPERAND_TYPE_VALUE.equals(right.getOperandType())) {
|
|
|
|
|
log.info("左操作数数量:【{}】,操作符:【{}】,右操作数:【{}】", evidences.size(), operator, right.getValue());
|
|
|
|
|
if (CalculationUtil.evaluateExpression(String.valueOf(evidences.size()), operator, right.getValue())) {
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
|
|
|
|
|
modelAtomicResultService.saveOrUpdate(atomicResult);
|
|
|
|
@ -484,6 +488,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
List<CaseEvidence> rightEvidences = getEvidencesByPromptId(rightModelAtomicIndex.getPromptId(), caseEvidences, evidenceDirectories, notePrompts);
|
|
|
|
|
Set<String> leftValueSet = getValueSetFromEvidences(left, evidences);
|
|
|
|
|
Set<String> rightValueSet = getValueSetFromEvidences(right, rightEvidences);
|
|
|
|
|
log.info("左操作数值集合:【{}】,操作符:【{}】,右操作数:【{}】", leftValueSet, operator, right.getValue());
|
|
|
|
|
// 使用CalculationUtil.evaluateExpression方法遍历比较leftValueSet和rightValueSet的任一值,一旦有一个满足(返回true),则return true
|
|
|
|
|
if (leftValueSet.stream().anyMatch(leftValue -> rightValueSet.stream().anyMatch(rightValue -> CalculationUtil.evaluateExpression(leftValue, operator, rightValue)))) {
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
|
|
|
|
@ -492,6 +497,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
}
|
|
|
|
|
} else if (OPERAND_TYPE_VALUE.equals(right.getOperandType())) {
|
|
|
|
|
Set<String> leftValueSet = getValueSetFromEvidences(left, evidences);
|
|
|
|
|
log.info("左操作数值集合:【{}】,操作符:【{}】,右操作数:【{}】", leftValueSet, operator, right.getValue());
|
|
|
|
|
if (leftValueSet.stream().anyMatch(leftValue -> CalculationUtil.evaluateExpression(leftValue, operator, right.getValue()))) {
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.EXIST.getCode());
|
|
|
|
|
modelAtomicResultService.saveOrUpdate(atomicResult);
|
|
|
|
@ -504,6 +510,8 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
modelAtomicResultService.saveOrUpdate(atomicResult);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
|
|
|
|
|
modelAtomicResultService.saveOrUpdate(atomicResult);
|
|
|
|
|
} else {
|
|
|
|
|
log.error("证据不存在。提示词ID:{}", modelAtomicIndex.getPromptId());
|
|
|
|
|
atomicResult.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
|
|
|
|
|