|
|
|
@ -27,6 +27,7 @@ import com.supervision.police.mapper.*;
|
|
|
|
|
import com.supervision.police.mybatis.RowSqlMapper;
|
|
|
|
|
import com.supervision.police.service.*;
|
|
|
|
|
import com.supervision.utils.CalculationUtil;
|
|
|
|
|
import com.supervision.utils.IndexRuleUtil;
|
|
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@ -221,6 +222,9 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
log.error("未找到指标原子关系信息");
|
|
|
|
|
return R.fail("未找到指标原子关系信息");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<ModelAtomicResult> modelAtomicResultList = modelAtomicResultService.lambdaQuery().eq(ModelAtomicResult::getCaseId, caseId).list();
|
|
|
|
|
|
|
|
|
|
log.info("开始计算指标结果");
|
|
|
|
|
// 遍历指标集合,处理每个指标的判断逻辑,得出结果
|
|
|
|
|
modelIndices.forEach(modelIndex -> {
|
|
|
|
@ -290,6 +294,10 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
modelIndexResult.setId(exist.getId());
|
|
|
|
|
}
|
|
|
|
|
modelIndexResult.setIndexResult(result ? "true" : "false");
|
|
|
|
|
|
|
|
|
|
// 先清除掉与指标失去关联的原子指标对应的结果
|
|
|
|
|
removeAtomicResultWithNoReference(modelIndex.getId(), modelIndexAtomicRelations, modelAtomicResultList);
|
|
|
|
|
|
|
|
|
|
if (exist == null) {
|
|
|
|
|
modelIndexResultMapper.insert(modelIndexResult);
|
|
|
|
|
} else {
|
|
|
|
@ -313,6 +321,22 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
|
return R.ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void removeAtomicResultWithNoReference(String modelIndexId, List<ModelIndexAtomicRelation> modelIndexAtomicRelations,
|
|
|
|
|
List<ModelAtomicResult> modelAtomicResultList) {
|
|
|
|
|
List<String> atomicIds = modelIndexAtomicRelations.stream()
|
|
|
|
|
.filter(relation -> StrUtil.equals(relation.getModelIndexId(), modelIndexId))
|
|
|
|
|
.map(ModelIndexAtomicRelation::getAtomicIndexId).toList();
|
|
|
|
|
|
|
|
|
|
List<ModelAtomicResult> modelAtomicResults = modelAtomicResultList.stream()
|
|
|
|
|
.filter(atomicResult -> StrUtil.equals(atomicResult.getIndexId(), modelIndexId)
|
|
|
|
|
&& !atomicIds.contains(atomicResult.getAtomicId())).toList();
|
|
|
|
|
|
|
|
|
|
for (ModelAtomicResult modelAtomicResult : modelAtomicResults) {
|
|
|
|
|
log.info("删除无引用的原子指标结果,指标id:{},原子指标ID:{}", modelIndexId,modelAtomicResult.getAtomicId());
|
|
|
|
|
modelAtomicResultMapper.deleteById(modelAtomicResult.getId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 人工定义指标分析
|
|
|
|
|
*
|
|
|
|
|