|
|
@ -1,7 +1,6 @@
|
|
|
|
package com.supervision.police.service.impl;
|
|
|
|
package com.supervision.police.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.io.IoUtil;
|
|
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
@ -14,7 +13,6 @@ import com.deepoove.poi.XWPFTemplate;
|
|
|
|
import com.supervision.common.domain.R;
|
|
|
|
import com.supervision.common.domain.R;
|
|
|
|
import com.supervision.common.utils.StringUtils;
|
|
|
|
import com.supervision.common.utils.StringUtils;
|
|
|
|
import com.supervision.constant.JudgeResultEnum;
|
|
|
|
import com.supervision.constant.JudgeResultEnum;
|
|
|
|
import com.supervision.constant.ScoreEnum;
|
|
|
|
|
|
|
|
import com.supervision.neo4j.dto.ResultDTO;
|
|
|
|
import com.supervision.neo4j.dto.ResultDTO;
|
|
|
|
import com.supervision.neo4j.utils.Neo4jUtils;
|
|
|
|
import com.supervision.neo4j.utils.Neo4jUtils;
|
|
|
|
import com.supervision.police.domain.*;
|
|
|
|
import com.supervision.police.domain.*;
|
|
|
@ -28,7 +26,6 @@ import com.supervision.police.mapper.*;
|
|
|
|
import com.supervision.police.mybatis.RowSqlMapper;
|
|
|
|
import com.supervision.police.mybatis.RowSqlMapper;
|
|
|
|
import com.supervision.police.service.*;
|
|
|
|
import com.supervision.police.service.*;
|
|
|
|
import com.supervision.utils.SqlParserUtil;
|
|
|
|
import com.supervision.utils.SqlParserUtil;
|
|
|
|
import jakarta.servlet.ServletOutputStream;
|
|
|
|
|
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@ -100,7 +97,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
//原子指标
|
|
|
|
//原子指标
|
|
|
|
List<ModelAtomicIndex> atomicIndices = modelAtomicIndexMapper.selectByCaseType(modelCase.getCaseType());
|
|
|
|
List<ModelAtomicIndex> atomicIndices = modelAtomicIndexMapper.selectByCaseType(modelCase.getCaseType());
|
|
|
|
// 存放原子指标的结果,key:原子指标ID,value:(key大指标ID,value:结果)
|
|
|
|
// 存放原子指标的结果,key:原子指标ID,value:(key大指标ID,value:结果)
|
|
|
|
Map<String, Map<String,String>> atomicResultMap = new HashMap<>();
|
|
|
|
Map<String, Map<String, String>> atomicResultMap = new HashMap<>();
|
|
|
|
for (ModelAtomicIndex atomicIndex : atomicIndices) {
|
|
|
|
for (ModelAtomicIndex atomicIndex : atomicIndices) {
|
|
|
|
//原子指标结果
|
|
|
|
//原子指标结果
|
|
|
|
ModelAtomicResult result = new ModelAtomicResult();
|
|
|
|
ModelAtomicResult result = new ModelAtomicResult();
|
|
|
@ -132,9 +129,10 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
List<ModelIndexAtomicRelation> relationList = modelIndexAtomicRelationService.lambdaQuery().eq(ModelIndexAtomicRelation::getAtomicIndexId, atomicIndex.getId()).list();
|
|
|
|
List<ModelIndexAtomicRelation> relationList = modelIndexAtomicRelationService.lambdaQuery().eq(ModelIndexAtomicRelation::getAtomicIndexId, atomicIndex.getId()).list();
|
|
|
|
for (ModelIndexAtomicRelation relation : relationList) {
|
|
|
|
for (ModelIndexAtomicRelation relation : relationList) {
|
|
|
|
// 保存或更新原子指标结果表
|
|
|
|
// 保存或更新原子指标结果表
|
|
|
|
ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(),relation.getModelIndexId(), atomicIndex.getId());
|
|
|
|
ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(), relation.getModelIndexId(), atomicIndex.getId());
|
|
|
|
result.setIndexId(relation.getModelIndexId());
|
|
|
|
result.setIndexId(relation.getModelIndexId());
|
|
|
|
if (exist == null) {
|
|
|
|
if (exist == null) {
|
|
|
|
|
|
|
|
result.setId(null);
|
|
|
|
modelAtomicResultMapper.insert(result);
|
|
|
|
modelAtomicResultMapper.insert(result);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
result.setId(exist.getId());
|
|
|
|
result.setId(exist.getId());
|
|
|
@ -169,11 +167,11 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
.eq(ModelAtomicResult::getAtomicId, atomicIndex.getId()));
|
|
|
|
.eq(ModelAtomicResult::getAtomicId, atomicIndex.getId()));
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(modelAtomicResults)) {
|
|
|
|
if (CollUtil.isEmpty(modelAtomicResults)) {
|
|
|
|
log.info("manuallyDefinedCase:根据caseId:{},auomicId:{}未找到原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
|
|
|
|
log.info("manuallyDefinedCase:根据caseId:{},atomicId:{}未找到原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (CollUtil.size(modelAtomicResults) > 0) {
|
|
|
|
if (CollUtil.size(modelAtomicResults) > 0) {
|
|
|
|
log.warn("manuallyDefinedCase:根据caseId:{},auomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
|
|
|
|
log.warn("manuallyDefinedCase:根据caseId:{},atomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ModelAtomicResult modelAtomicResult = CollUtil.getFirst(modelAtomicResults);
|
|
|
|
ModelAtomicResult modelAtomicResult = CollUtil.getFirst(modelAtomicResults);
|
|
|
|
|
|
|
|
|
|
|
@ -236,7 +234,7 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 最终计算得分
|
|
|
|
* 最终计算得分
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void calculateFinalScore(AnalyseCaseDTO analyseCaseDTO, ModelCase modelCase, Map<String, Map<String,String>> atomicResultMap) {
|
|
|
|
private void calculateFinalScore(AnalyseCaseDTO analyseCaseDTO, ModelCase modelCase, Map<String, Map<String, String>> atomicResultMap) {
|
|
|
|
// 计算指标结果
|
|
|
|
// 计算指标结果
|
|
|
|
int score = 0;
|
|
|
|
int score = 0;
|
|
|
|
// 根据案件类型获取所有的指标
|
|
|
|
// 根据案件类型获取所有的指标
|
|
|
@ -266,8 +264,13 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
atomicIds.add(data.getAtomicIndex());
|
|
|
|
atomicIds.add(data.getAtomicIndex());
|
|
|
|
// 先找到原子指标对应的大指标的结果
|
|
|
|
// 先找到原子指标对应的大指标的结果
|
|
|
|
Map<String, String> atomicIndexMap = atomicResultMap.get(data.getAtomicIndex());
|
|
|
|
Map<String, String> atomicIndexMap = atomicResultMap.get(data.getAtomicIndex());
|
|
|
|
|
|
|
|
String atomicIndexResult;
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(atomicIndexMap)) {
|
|
|
|
|
|
|
|
atomicIndexResult = JudgeResultEnum.UNKNOWN.getCode();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
// 这里可能不存在,如果未找到,就默认为false
|
|
|
|
// 这里可能不存在,如果未找到,就默认为false
|
|
|
|
String atomicIndexResult = atomicIndexMap.getOrDefault(modelIndex.getId(), JudgeResultEnum.UNKNOWN.getCode());
|
|
|
|
atomicIndexResult = atomicIndexMap.getOrDefault(modelIndex.getId(), JudgeResultEnum.UNKNOWN.getCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
String relationalSymbol = data.getRelationalSymbol();
|
|
|
|
String relationalSymbol = data.getRelationalSymbol();
|
|
|
|
JudgeResultEnum instance = JudgeResultEnum.getInstance(relationalSymbol);
|
|
|
|
JudgeResultEnum instance = JudgeResultEnum.getInstance(relationalSymbol);
|
|
|
|
boolean ato = StrUtil.equals(atomicIndexResult, instance.getCode());
|
|
|
|
boolean ato = StrUtil.equals(atomicIndexResult, instance.getCode());
|
|
|
@ -314,9 +317,9 @@ public class ModelServiceImpl implements ModelService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 计算分数 共性+入罪/共性+出罪 取最大值
|
|
|
|
// 计算分数 共性+入罪/共性+出罪 取最大值
|
|
|
|
Integer gx = typeScoreMap.getOrDefault("1",0);
|
|
|
|
Integer gx = typeScoreMap.getOrDefault("1", 0);
|
|
|
|
Integer rz = typeScoreMap.getOrDefault("2",0);
|
|
|
|
Integer rz = typeScoreMap.getOrDefault("2", 0);
|
|
|
|
Integer cz = typeScoreMap.getOrDefault("3",0);
|
|
|
|
Integer cz = typeScoreMap.getOrDefault("3", 0);
|
|
|
|
int max = Integer.max(gx + rz, gx + cz);
|
|
|
|
int max = Integer.max(gx + rz, gx + cz);
|
|
|
|
modelCase.setTotalScore(max);
|
|
|
|
modelCase.setTotalScore(max);
|
|
|
|
modelCaseMapper.updateById(modelCase);
|
|
|
|
modelCaseMapper.updateById(modelCase);
|
|
|
|