修改-将状态校验进行修改

topo_dev
liu 9 months ago
parent 5d23461d66
commit 54a4a05383

@ -5,25 +5,22 @@ import lombok.Getter;
@Getter @Getter
public enum JudgeResultEnum { public enum JudgeResultEnum {
TRUE("1","真实","1"), TRUE("1","真实"),
FALSE("2","虚构","0"), FALSE("2","虚构"),
EXIST("3","存在","1"), EXIST("3","存在"),
NOT_EXIST("4","不存在","0"), NOT_EXIST("4","不存在"),
UNKNOWN("5","未知","-1"); UNKNOWN("5","未知");
private String code; private final String code;
private String desc; private final String desc;
// 原子指标结果 -1:未知, 0:不存在, 1存在
private String translateResult;
JudgeResultEnum(String code, String desc,String translateResult) { JudgeResultEnum(String code, String desc) {
this.code = code; this.code = code;
this.desc = desc; this.desc = desc;
this.translateResult = translateResult;
} }
@ -42,14 +39,6 @@ public enum JudgeResultEnum {
return JudgeResultEnum.UNKNOWN; return JudgeResultEnum.UNKNOWN;
} }
public static JudgeResultEnum getInstanceByTranslateResult(String translateResult) {
for (JudgeResultEnum judgeResultEnum : JudgeResultEnum.values()) {
if (judgeResultEnum.getTranslateResult().equals(translateResult)) {
return judgeResultEnum;
}
}
return JudgeResultEnum.UNKNOWN;
}
/** /**

@ -40,7 +40,7 @@ public class ModelAtomicResult implements Serializable {
private String atomicId; private String atomicId;
/** /**
* -1:, 0:, 1 *
*/ */
private String atomicResult; private String atomicResult;

@ -43,34 +43,15 @@ public class AtomicIndexDTO {
private String indexSource; private String indexSource;
public void atomicResultToIndexResult() {
JudgeResultEnum instance = JudgeResultEnum.getInstance(this.atomicResult);
if (Objects.isNull(instance)){
this.indexResult = "false";
return;
}
this.indexResult = instance.flagIsTrue() ? "true" : "false";
}
public void judgeWithIndexResult(String judgeLogic){ public void judgeWithIndexResult(String judgeLogic){
JudgeResultEnum instance = JudgeResultEnum.getInstanceByTranslateResult(this.atomicResult); // 1.指标判断符合,规则要求不符合,返回false
if (Objects.isNull(instance)){ // 2.指标判断不符合,规则要求符合,返回false
this.indexResult = "false"; // 3.指标判断符合,规则要求符合,返回true
return; // 4.指标判断不符合,规则要求不符合,返回true
} if (judgeLogic.equals(this.atomicResult)){
if (StrUtil.isBlank(judgeLogic)){ this.indexResult = "true";
this.indexResult = instance.flagIsTrue() ? "true" : "false";
}else { }else {
String translateResult = instance.getTranslateResult(); this.indexResult = "false";
// 1.指标判断符合,规则要求不符合,返回false
// 2.指标判断不符合,规则要求符合,返回false
// 3.指标判断符合,规则要求符合,返回true
// 4.指标判断不符合,规则要求不符合,返回true
if (judgeLogic.equals(translateResult)){
this.indexResult = "true";
}else {
this.indexResult = "false";
}
} }
} }

@ -326,7 +326,9 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
} }
// 是否是新的结果 // 是否是新的结果
record.setNewFlag(!StrUtil.equals(record.getIndexResult(), record.getPreResult())); record.setNewFlag(!StrUtil.equals(record.getIndexResult(), record.getPreResult()));
// 获取原子指标的判断规则
String judgeLogic = record.getJudgeLogic(); String judgeLogic = record.getJudgeLogic();
// 配置的指标的逻辑
Map<String, String> indexJundgeLogicMap = parseLogicMap(judgeLogic); Map<String, String> indexJundgeLogicMap = parseLogicMap(judgeLogic);
String[] array = record.getAtomicIds().split(","); String[] array = record.getAtomicIds().split(",");
List<String> atomicIds = Arrays.asList(array); List<String> atomicIds = Arrays.asList(array);
@ -355,14 +357,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
Map<String, String> resultMap = new HashMap<>(); Map<String, String> resultMap = new HashMap<>();
for (JudgeLogic logic : judgeLogics) { for (JudgeLogic logic : judgeLogics) {
for (AtomicData atomicDatum : logic.getAtomicData()) { for (AtomicData atomicDatum : logic.getAtomicData()) {
// 原子指标结果 -1:未知, 0:不存在, 1存在 resultMap.put(atomicDatum.getAtomicIndex(), atomicDatum.getRelationalSymbol());
if (atomicDatum.getRelationalSymbol().equals("1") || atomicDatum.getRelationalSymbol().equals("3")) {
resultMap.put(atomicDatum.getAtomicIndex(), "1");
} else if (atomicDatum.getRelationalSymbol().equals("2") || atomicDatum.getRelationalSymbol().equals("4")) {
resultMap.put(atomicDatum.getAtomicIndex(), "0");
} else {
resultMap.put(atomicDatum.getAtomicIndex(), "-1");
}
} }
} }
return resultMap; return resultMap;

@ -90,7 +90,7 @@ public class ModelServiceImpl implements ModelService {
.eq(CasePerson::getCaseId, analyseCaseDTO.getCaseId()) .eq(CasePerson::getCaseId, analyseCaseDTO.getCaseId())
.eq(CasePerson::getCaseActorFlag, 1) .eq(CasePerson::getCaseActorFlag, 1)
.eq(CasePerson::getRoleCode, "1") .eq(CasePerson::getRoleCode, "1")
.eq(StrUtil.isNotEmpty(analyseCaseDTO.getLawActorName()),CasePerson::getName, analyseCaseDTO.getLawActorName())); .eq(StrUtil.isNotEmpty(analyseCaseDTO.getLawActorName()), CasePerson::getName, analyseCaseDTO.getLawActorName()));
if (ObjectUtil.isEmpty(casePerson)) { if (ObjectUtil.isEmpty(casePerson)) {
throw new RuntimeException("未找到的行为人" + analyseCaseDTO.getLawActorName()); throw new RuntimeException("未找到的行为人" + analyseCaseDTO.getLawActorName());
} }
@ -131,21 +131,13 @@ public class ModelServiceImpl implements ModelService {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
// 非人工填写的,需要进行更新结果,人工填写的不更新(人工填写的编码,需要进行特殊处理) // 非人工填写的,需要进行更新结果,人工填写的不更新(人工填写的编码,需要进行特殊处理)
if (!"1".equals(atomicIndex.getIndexSource())) { //保存原子指标结果表
//保存原子指标结果表 ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(), atomicIndex.getId());
ModelAtomicResult exist = modelAtomicResultMapper.selectByCaseIdAndAtomicId(analyseCaseDTO.getCaseId(), casePerson.getId(), atomicIndex.getId()); if (exist == null) {
if (exist == null) { modelAtomicResultMapper.insert(result);
modelAtomicResultMapper.insert(result); } else {
} else { result.setId(exist.getId());
result.setId(exist.getId()); modelAtomicResultMapper.updateById(result);
modelAtomicResultMapper.updateById(result);
}
}
// 所有原子指标id,判断结果
Set<String> checkAtomicResult = Set.of("-1", "0", "1");
if (StrUtil.isNotBlank(result.getAtomicResult()) && !checkAtomicResult.contains(result.getAtomicResult())) {
log.error("TEST:不被支持的校核结果,需排查BUG,atomicId:" + result.getAtomicId() + " result:" + result.getAtomicResult());
} }
atomicResultMap.put(result.getAtomicId(), result.getAtomicResult()); atomicResultMap.put(result.getAtomicId(), result.getAtomicResult());
} }
@ -177,10 +169,9 @@ public class ModelServiceImpl implements ModelService {
log.warn("manuallyDefinedCase:根据caseId:{},auomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId()); log.warn("manuallyDefinedCase:根据caseId:{},auomicId:{}找到多个原子指标结果", analyseCaseDTO.getCaseId(), atomicIndex.getId());
} }
ModelAtomicResult modelAtomicResult = CollUtil.getFirst(modelAtomicResults); ModelAtomicResult modelAtomicResult = CollUtil.getFirst(modelAtomicResults);
// 对结果进行映射操作,前端填的是1-5,我们这里应该是-1,0,1
JudgeResultEnum instance = JudgeResultEnum.getInstance(modelAtomicResult.getAtomicResult());
result.setAtomicResult(instance.getTranslateResult());
result.setAtomicResult(modelAtomicResult.getAtomicResult());
} }
@Override @Override
@ -243,6 +234,7 @@ public class ModelServiceImpl implements ModelService {
int score = 0; int score = 0;
// 根据案件类型获取所有的指标 // 根据案件类型获取所有的指标
List<ModelIndex> modelIndices = modelIndexMapper.selectByCaseType(modelCase.getCaseType()); List<ModelIndex> modelIndices = modelIndexMapper.selectByCaseType(modelCase.getCaseType());
Map<String, Integer> typeScoreMap = new HashMap<>();
for (ModelIndex modelIndex : modelIndices) { for (ModelIndex modelIndex : modelIndices) {
ModelIndexResult result = new ModelIndexResult(); ModelIndexResult result = new ModelIndexResult();
result.setCaseId(analyseCaseDTO.getCaseId()); result.setCaseId(analyseCaseDTO.getCaseId());
@ -266,10 +258,10 @@ public class ModelServiceImpl implements ModelService {
AtomicData data = atomicData.get(j); AtomicData data = atomicData.get(j);
atomicIds.add(data.getAtomicIndex()); atomicIds.add(data.getAtomicIndex());
// 这里可能不存在,如果未找到,就默认为false // 这里可能不存在,如果未找到,就默认为false
String atomicIndexResult = atomicResultMap.getOrDefault(data.getAtomicIndex(), "-1"); String atomicIndexResult = atomicResultMap.getOrDefault(data.getAtomicIndex(), 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.getTranslateResult()); boolean ato = StrUtil.equals(atomicIndexResult, instance.getCode());
if (j == 0) { if (j == 0) {
innerGroupJudge = ato; innerGroupJudge = ato;
} else { } else {
@ -308,10 +300,16 @@ public class ModelServiceImpl implements ModelService {
} }
if ("true".equals(result.getIndexResult())) { if ("true".equals(result.getIndexResult())) {
score = score + modelIndex.getIndexScore(); Integer orDefault = typeScoreMap.getOrDefault(modelIndex.getIndexType(), 0);
typeScoreMap.put(modelIndex.getIndexType(), orDefault + modelIndex.getIndexScore());
} }
} }
modelCase.setTotalScore(score); // 计算分数 共性+入罪/共性+出罪 取最大值
Integer gx = typeScoreMap.get("1");
Integer rz = typeScoreMap.get("2");
Integer cz = typeScoreMap.get("3");
int max = Integer.max(gx + rz, gx + cz);
modelCase.setTotalScore(max);
modelCaseMapper.updateById(modelCase); modelCaseMapper.updateById(modelCase);
} }
@ -348,15 +346,15 @@ public class ModelServiceImpl implements ModelService {
List<ResultDTO> res = Neo4jUtils.getResultDTOList(run); List<ResultDTO> res = Neo4jUtils.getResultDTOList(run);
if (res.isEmpty()) { if (res.isEmpty()) {
result.setAtomicResult("-1"); result.setAtomicResult(JudgeResultEnum.UNKNOWN.getCode());
} else { } else {
// 设置为0,不存在 // 设置为0,不存在
result.setAtomicResult("0"); result.setAtomicResult(JudgeResultEnum.NOT_EXIST.getCode());
// 进行遍历,如果有存在的,就设置为有 // 进行遍历,如果有存在的,就设置为有
for (ResultDTO resultDTO : res) { for (ResultDTO resultDTO : res) {
if (StringUtils.isNotEmpty(resultDTO.getRelId())) { if (StringUtils.isNotEmpty(resultDTO.getRelId())) {
//存在关系 //存在关系
result.setAtomicResult("1"); result.setAtomicResult(JudgeResultEnum.EXIST.getCode());
result.setRecordSplitId(resultDTO.getRecordSplitId()); result.setRecordSplitId(resultDTO.getRecordSplitId());
result.setRecordId(resultDTO.getRecordId()); result.setRecordId(resultDTO.getRecordId());
// 如果只要存在,就不进行校验了,直接跳出循环 // 如果只要存在,就不进行校验了,直接跳出循环
@ -375,7 +373,7 @@ public class ModelServiceImpl implements ModelService {
* @param result * @param result
* @param sql * @param sql
*/ */
private void analyseDataBaseCase(AnalyseCaseDTO analyseCaseDTO, ModelAtomicResult result, String sql,String caseActorName) { private void analyseDataBaseCase(AnalyseCaseDTO analyseCaseDTO, ModelAtomicResult result, String sql, String caseActorName) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("caseId", result.getCaseId()); params.put("caseId", result.getCaseId());
@ -387,7 +385,7 @@ public class ModelServiceImpl implements ModelService {
if (modelIndexService.checkSql(sql)) { if (modelIndexService.checkSql(sql)) {
success = parseResult(rowSqlMapper.selectList(sql, params, Map.class)); success = parseResult(rowSqlMapper.selectList(sql, params, Map.class));
} }
result.setAtomicResult(success ? "1" : "0"); result.setAtomicResult(success ? JudgeResultEnum.EXIST.getCode() : JudgeResultEnum.NOT_EXIST.getCode());
} }

Loading…
Cancel
Save