|
|
@ -7,16 +7,22 @@ import cn.iocoder.yudao.framework.common.util.http.HttpUtils; |
|
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
|
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
|
|
import cn.iocoder.yudao.module.alert.controller.admin.assessreport.vo.*; |
|
|
import cn.iocoder.yudao.module.alert.controller.admin.assessreport.vo.*; |
|
|
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg; |
|
|
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg; |
|
|
|
|
|
import cn.iocoder.yudao.module.alert.dao.domain.AssessReportCfg; |
|
|
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion; |
|
|
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion; |
|
|
|
|
|
import cn.iocoder.yudao.module.alert.dao.mapper.AssessReportCfgMapper; |
|
|
import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService; |
|
|
import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService; |
|
|
import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService; |
|
|
import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService; |
|
|
import cn.iocoder.yudao.module.alert.dal.dataobject.assessreport.AssessReportDO; |
|
|
import cn.iocoder.yudao.module.alert.dal.dataobject.assessreport.AssessReportDO; |
|
|
import cn.iocoder.yudao.module.alert.dal.mysql.assessreport.AssessReportMapper; |
|
|
import cn.iocoder.yudao.module.alert.dal.mysql.assessreport.AssessReportMapper; |
|
|
|
|
|
import cn.iocoder.yudao.module.alert.dal.dataobject.model.ModelConditionDO; |
|
|
|
|
|
import cn.iocoder.yudao.module.alert.dal.mysql.model.ModelConditionMapper; |
|
|
import cn.iocoder.yudao.module.alert.service.assessreport.AssessReportService; |
|
|
import cn.iocoder.yudao.module.alert.service.assessreport.AssessReportService; |
|
|
import com.alibaba.excel.util.DateUtils; |
|
|
import com.alibaba.excel.util.DateUtils; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.fasterxml.jackson.core.type.TypeReference; |
|
|
import com.fasterxml.jackson.core.type.TypeReference; |
|
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
|
import lombok.NoArgsConstructor; |
|
|
import lombok.RequiredArgsConstructor; |
|
|
import lombok.RequiredArgsConstructor; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
@ -24,8 +30,6 @@ import org.springframework.stereotype.Service; |
|
|
import org.springframework.util.CollectionUtils; |
|
|
import org.springframework.util.CollectionUtils; |
|
|
import org.springframework.util.StringUtils; |
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
|
import java.time.Duration; |
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@ -38,6 +42,8 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
private final ModelCfgService modelCfgService; |
|
|
private final ModelCfgService modelCfgService; |
|
|
private final ModelVersionService modelVersionService; |
|
|
private final ModelVersionService modelVersionService; |
|
|
private final AssessReportMapper assessReportMapper; |
|
|
private final AssessReportMapper assessReportMapper; |
|
|
|
|
|
private final AssessReportCfgMapper assessReportCfgMapper; |
|
|
|
|
|
private final ModelConditionMapper modelConditionMapper; |
|
|
@Value("${assess-report.host}") |
|
|
@Value("${assess-report.host}") |
|
|
private String algorithmHost; |
|
|
private String algorithmHost; |
|
|
@Value("${exa.ip:}") |
|
|
@Value("${exa.ip:}") |
|
|
@ -52,7 +58,8 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
} |
|
|
} |
|
|
String targetVersion = StringUtils.hasText(reqVO.getVersion()) ? reqVO.getVersion() : modelCfg.getCurVersion(); |
|
|
String targetVersion = StringUtils.hasText(reqVO.getVersion()) ? reqVO.getVersion() : modelCfg.getCurVersion(); |
|
|
String modelInfoStr = resolveModelInfo(modelCfg, targetVersion); |
|
|
String modelInfoStr = resolveModelInfo(modelCfg, targetVersion); |
|
|
Map<String, Object> modelInfo = JsonUtils.parseObject(modelInfoStr, new TypeReference<Map<String, Object>>() {}); |
|
|
Map<String, Object> modelInfo = JsonUtils.parseObject(modelInfoStr, new TypeReference<Map<String, Object>>() { |
|
|
|
|
|
}); |
|
|
List<AssessPointVO> pointRows = buildPointRows(modelInfo); |
|
|
List<AssessPointVO> pointRows = buildPointRows(modelInfo); |
|
|
List<AssessRowVO> assessRows = buildAssessRows(pointRows); |
|
|
List<AssessRowVO> assessRows = buildAssessRows(pointRows); |
|
|
AssessInitRespVO respVO = new AssessInitRespVO(); |
|
|
AssessInitRespVO respVO = new AssessInitRespVO(); |
|
|
@ -71,14 +78,15 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public AssessReportDetailVO getReportDetail(Long id) { |
|
|
public AssessReportDetailVO getReportDetail(Long id) { |
|
|
AssessReportDO report = assessReportMapper.selectById(id); |
|
|
AssessReportCfg report = assessReportCfgMapper.selectById(id); |
|
|
if (report == null) { |
|
|
if (report == null) { |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|
AssessReportDetailVO vo = new AssessReportDetailVO(); |
|
|
AssessReportDetailVO vo = new AssessReportDetailVO(); |
|
|
vo.setId(id); |
|
|
vo.setId(id); |
|
|
vo.setModelName(report.getModelName()); |
|
|
vo.setModelName(null); |
|
|
vo.setReport(JsonUtils.parseObject(report.getReportJson(), new TypeReference<Map<String, Object>>() {})); |
|
|
vo.setReport(JsonUtils.parseObject(report.getReport(), new TypeReference<Map<String, Object>>() { |
|
|
|
|
|
})); |
|
|
return vo; |
|
|
return vo; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -91,7 +99,8 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
String modelInfoStr = StringUtils.hasText(reqVO.getModelInfo()) |
|
|
String modelInfoStr = StringUtils.hasText(reqVO.getModelInfo()) |
|
|
? reqVO.getModelInfo() |
|
|
? reqVO.getModelInfo() |
|
|
: resolveModelInfo(modelCfg, reqVO.getVersion()); |
|
|
: resolveModelInfo(modelCfg, reqVO.getVersion()); |
|
|
Map<String, Object> modelInfo = JsonUtils.parseObject(modelInfoStr, new TypeReference<Map<String, Object>>() {}); |
|
|
Map<String, Object> modelInfo = JsonUtils.parseObject(modelInfoStr, new TypeReference<Map<String, Object>>() { |
|
|
|
|
|
}); |
|
|
// 使用旧版逻辑:解析 json,拆分幅值,构造单点 assess 列表,调用对应算法接口
|
|
|
// 使用旧版逻辑:解析 json,拆分幅值,构造单点 assess 列表,调用对应算法接口
|
|
|
String json = StringUtils.hasText(reqVO.getRawJson()) |
|
|
String json = StringUtils.hasText(reqVO.getRawJson()) |
|
|
? reqVO.getRawJson() |
|
|
? reqVO.getRawJson() |
|
|
@ -138,12 +147,20 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
String endpoint = "/api/" + alg + "/assess_PositiveAndNegative"; |
|
|
String endpoint = "/api/" + alg + "/assess_PositiveAndNegative"; |
|
|
String tempAll = HttpUtils.post(algorithmHost + endpoint, null, JsonUtils.toJsonString(assessInput)); |
|
|
String tempAll = HttpUtils.post(algorithmHost + endpoint, null, JsonUtils.toJsonString(assessInput)); |
|
|
|
|
|
|
|
|
|
|
|
// 部分算法返回 {"result":"{...}"},需要先拆出 result,再解析内部 JSON
|
|
|
|
|
|
Map<String, Object> rawMap = JsonUtils.parseObject(tempAll, new TypeReference<Map<String, Object>>() { |
|
|
|
|
|
}); |
|
|
|
|
|
String payload = tempAll; |
|
|
|
|
|
if (rawMap != null && rawMap.containsKey("result") && rawMap.get("result") instanceof String) { |
|
|
|
|
|
payload = rawMap.get("result").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
AssessEvaluateRespVO respVO = new AssessEvaluateRespVO(); |
|
|
AssessEvaluateRespVO respVO = new AssessEvaluateRespVO(); |
|
|
AssessAllMessage message = JsonUtils.parseObject(tempAll, AssessAllMessage.class); |
|
|
AssessAllMessage message = JsonUtils.parseObject(payload, AssessAllMessage.class); |
|
|
if (message != null && "OK".equalsIgnoreCase(message.getMessage())) { |
|
|
if (message != null && "OK".equalsIgnoreCase(message.getMessage())) { |
|
|
AssessAll trAll = JsonUtils.parseObject(tempAll, AssessAll.class); |
|
|
AssessAll trAll = JsonUtils.parseObject(payload, AssessAll.class); |
|
|
TestReturn tr2 = toTestReturn(trAll.getPositive()); |
|
|
TestReturn tr2 = toTestReturn(trAll.getPositive()); |
|
|
TestReturn tr1 = toTestReturn(trAll.getNegative()); |
|
|
TestReturn tr1 = toTestReturn(trAll.getNegative() != null ? trAll.getNegative() : trAll.getPositive()); |
|
|
int returnIndex1 = 0; |
|
|
int returnIndex1 = 0; |
|
|
for (int i = 0; i < limit.length; i++) { |
|
|
for (int i = 0; i < limit.length; i++) { |
|
|
if (indexList[i]) { |
|
|
if (indexList[i]) { |
|
|
@ -171,12 +188,16 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
respVO.setPoints(mapAssessResultByIndex(reqVO.getAssessRows(), tr)); |
|
|
respVO.setPoints(mapAssessResultByIndex(reqVO.getAssessRows(), tr)); |
|
|
respVO.setCleanDurationSeconds(message.getCleanTime()); |
|
|
respVO.setCleanDurationSeconds(message.getCleanTime() != null ? message.getCleanTime() : 0d); |
|
|
respVO.setDurationSeconds(message.getAssessTime()); |
|
|
respVO.setDurationSeconds(message.getAssessTime() != null ? message.getAssessTime() : 0d); |
|
|
} else { |
|
|
} else { |
|
|
throw new RuntimeException(tempAll); |
|
|
throw new RuntimeException(tempAll); |
|
|
} |
|
|
} |
|
|
respVO.setCoverage(mt.getCoverage()); |
|
|
Double cov = mt.getCoverage(); |
|
|
|
|
|
if (cov == null) { |
|
|
|
|
|
cov = fetchCoverage(modelInfo); |
|
|
|
|
|
} |
|
|
|
|
|
respVO.setCoverage(cov == null ? 0d : cov); |
|
|
return respVO; |
|
|
return respVO; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -198,6 +219,23 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
return assessReportMapper.insert(reportDO) > 0; |
|
|
return assessReportMapper.insert(reportDO) > 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Boolean insertLegacyReport(AssessReportCreateReqVO reqVO) { |
|
|
|
|
|
AssessReportCfg reportDO = new AssessReportCfg(); |
|
|
|
|
|
reportDO.setModelId(reqVO.getModelId()); |
|
|
|
|
|
reportDO.setVersion(reqVO.getVersion()); |
|
|
|
|
|
reportDO.setReport(reqVO.getRawReport() != null ? reqVO.getRawReport() : JsonUtils.toJsonString(reqVO.getReport())); |
|
|
|
|
|
reportDO.setScore(reqVO.getScore() != null ? reqVO.getScore().doubleValue() : null); |
|
|
|
|
|
reportDO.setCoverRange(reqVO.getCoverage() != null ? reqVO.getCoverage().doubleValue() : null); |
|
|
|
|
|
reportDO.setValid(Boolean.TRUE.equals(reqVO.getValid()) ? "是" : "否"); |
|
|
|
|
|
reportDO.setIdentifier(reqVO.getIdentifier()); |
|
|
|
|
|
reportDO.setVerifier(reqVO.getVerifier()); |
|
|
|
|
|
// 旧表 time 为 Date,尝试解析 yyyy-MM-dd HH:mm:ss,失败则不设置
|
|
|
|
|
|
reportDO.setStatus(0); |
|
|
|
|
|
reportDO.setConditionName(reqVO.getConditionName()); |
|
|
|
|
|
return assessReportCfgMapper.insert(reportDO) > 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public AssessCleanSummaryVO cleanSummary(AssessCleanQueryReqVO reqVO) { |
|
|
public AssessCleanSummaryVO cleanSummary(AssessCleanQueryReqVO reqVO) { |
|
|
// 这里先返回空壳,后续可对接 EXA / Python 服务
|
|
|
// 这里先返回空壳,后续可对接 EXA / Python 服务
|
|
|
@ -218,6 +256,76 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
return vo; |
|
|
return vo; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public List<AssessReportSimpleRespVO> list(Integer modelId, String version, Boolean onlyValid) { |
|
|
|
|
|
LambdaQueryWrapper<AssessReportCfg> wrapper = Wrappers.lambdaQuery(AssessReportCfg.class) |
|
|
|
|
|
.eq(AssessReportCfg::getModelId, modelId) |
|
|
|
|
|
.eq(StringUtils.hasText(version), AssessReportCfg::getVersion, version) |
|
|
|
|
|
.eq(Boolean.TRUE.equals(onlyValid), AssessReportCfg::getValid, "是") |
|
|
|
|
|
.orderByDesc(AssessReportCfg::getCreateTime); |
|
|
|
|
|
List<AssessReportCfg> reports = assessReportCfgMapper.selectList(wrapper); |
|
|
|
|
|
if (CollectionUtils.isEmpty(reports)) { |
|
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
|
} |
|
|
|
|
|
return reports.stream().map(r -> { |
|
|
|
|
|
AssessReportSimpleRespVO vo = new AssessReportSimpleRespVO(); |
|
|
|
|
|
vo.setId(r.getId()); |
|
|
|
|
|
vo.setScore(r.getScore()); |
|
|
|
|
|
vo.setCoverRange(r.getCoverRange()); |
|
|
|
|
|
vo.setValidFlag("是".equals(r.getValid())); |
|
|
|
|
|
vo.setIdentifier(r.getIdentifier()); |
|
|
|
|
|
vo.setVerifier(r.getVerifier()); |
|
|
|
|
|
vo.setAssessTime(r.getTime() != null ? DateUtils.format(r.getTime(), "yyyy-MM-dd HH:mm:ss") : null); |
|
|
|
|
|
vo.setVersion(r.getVersion()); |
|
|
|
|
|
vo.setConditionName(r.getConditionName()); |
|
|
|
|
|
return vo; |
|
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public List<AssessReportNameRespVO> listReportNames(Integer modelId, String version) { |
|
|
|
|
|
LambdaQueryWrapper<AssessReportCfg> wrapper = Wrappers.lambdaQuery(AssessReportCfg.class) |
|
|
|
|
|
.eq(AssessReportCfg::getModelId, modelId) |
|
|
|
|
|
.eq(StringUtils.hasText(version), AssessReportCfg::getVersion, version) |
|
|
|
|
|
.orderByDesc(AssessReportCfg::getTime); |
|
|
|
|
|
List<AssessReportCfg> reports = assessReportCfgMapper.selectList(wrapper); |
|
|
|
|
|
if (CollectionUtils.isEmpty(reports)) { |
|
|
|
|
|
return Collections.emptyList(); |
|
|
|
|
|
} |
|
|
|
|
|
return reports.stream().map(r -> { |
|
|
|
|
|
AssessReportNameRespVO vo = new AssessReportNameRespVO(); |
|
|
|
|
|
vo.setId(r.getId().longValue()); |
|
|
|
|
|
if (r.getCreateTime() != null) { |
|
|
|
|
|
vo.setName("RV" + DateUtils.format(r.getCreateTime(), "yyyy-MM-dd'T'HH:mm:ss")); |
|
|
|
|
|
} else { |
|
|
|
|
|
vo.setName("RV"); |
|
|
|
|
|
} |
|
|
|
|
|
return vo; |
|
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public AssessConditionRespVO getCondition(String algorithm) { |
|
|
|
|
|
LambdaQueryWrapper<ModelConditionDO> wrapper = Wrappers.lambdaQuery(ModelConditionDO.class) |
|
|
|
|
|
.eq(ModelConditionDO::getAlgorithm, algorithm) |
|
|
|
|
|
.last("limit 1"); |
|
|
|
|
|
ModelConditionDO record = modelConditionMapper.selectOne(wrapper); |
|
|
|
|
|
AssessConditionRespVO vo = new AssessConditionRespVO(); |
|
|
|
|
|
if (record != null) { |
|
|
|
|
|
vo.setCondition(record.getCondition()); |
|
|
|
|
|
try { |
|
|
|
|
|
Map<String, Object> map = JsonUtils.parseObject(record.getCondition(), new TypeReference<Map<String, Object>>() { |
|
|
|
|
|
}); |
|
|
|
|
|
Object score = map != null ? map.get("model_score") : null; |
|
|
|
|
|
if (score instanceof Number) { |
|
|
|
|
|
vo.setModelScore(((Number) score).doubleValue()); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (Exception ignored) { |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return vo; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
private String resolveModelInfo(ModelCfg cfg, String version) { |
|
|
private String resolveModelInfo(ModelCfg cfg, String version) { |
|
|
if (!StringUtils.hasText(version) || "v-test".equalsIgnoreCase(version)) { |
|
|
if (!StringUtils.hasText(version) || "v-test".equalsIgnoreCase(version)) { |
|
|
return cfg.getModelInfo(); |
|
|
return cfg.getModelInfo(); |
|
|
@ -522,7 +630,7 @@ public class AssessReportServiceImpl implements AssessReportService { |
|
|
return list; |
|
|
return list; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private Double getListValue(List<Double> list, int idx) { |
|
|
private Double getListValue(List<Double> list, int idx) { |
|
|
if (CollectionUtils.isEmpty(list) || idx >= list.size()) { |
|
|
if (CollectionUtils.isEmpty(list) || idx >= list.size()) { |
|
|
return 0d; |
|
|
return 0d; |
|
|
} |
|
|
} |
|
|
@ -551,50 +659,89 @@ class Assessinfo { |
|
|
|
|
|
|
|
|
@lombok.Data |
|
|
@lombok.Data |
|
|
class TestData { |
|
|
class TestData { |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("time") |
|
|
private String time; |
|
|
private String time; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("points") |
|
|
private String points; |
|
|
private String points; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("interval") |
|
|
private Integer interval; |
|
|
private Integer interval; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@lombok.Data |
|
|
@lombok.Data |
|
|
class ModelTestNew { |
|
|
class ModelTestNew { |
|
|
private boolean expand; |
|
|
private boolean expand; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("Test_Data") |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonAlias({"Test_Data", "test_data"}) |
|
|
private TestData Test_Data; |
|
|
private TestData Test_Data; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("dead") |
|
|
private String dead; |
|
|
private String dead; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("limit") |
|
|
private String limit; |
|
|
private String limit; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("Model_id") |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonAlias({"Model_id", "model_id"}) |
|
|
private String Model_id; |
|
|
private String Model_id; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("Model_alg") |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonAlias({"Model_alg", "model_alg"}) |
|
|
private String Model_alg; |
|
|
private String Model_alg; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("number_sample") |
|
|
private int number_sample; |
|
|
private int number_sample; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("assess") |
|
|
private List<Assessinfo> assess; |
|
|
private List<Assessinfo> assess; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("condition") |
|
|
private String condition; |
|
|
private String condition; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("Test_Type") |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonAlias({"Test_Type", "test_type"}) |
|
|
private String Test_Type; |
|
|
private String Test_Type; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("Limit_Value") |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonAlias({"Limit_Value", "limit_value"}) |
|
|
private double Limit_Value; |
|
|
private double Limit_Value; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("uplow") |
|
|
private String uplow; |
|
|
private String uplow; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("number") |
|
|
private int number; |
|
|
private int number; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("version") |
|
|
private String version; |
|
|
private String version; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("low_f") |
|
|
private String low_f; |
|
|
private String low_f; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("high_f") |
|
|
private String high_f; |
|
|
private String high_f; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("k") |
|
|
private Integer k; |
|
|
private Integer k; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("coverage") |
|
|
private Double coverage; |
|
|
private Double coverage; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@lombok.Data |
|
|
@lombok.Data |
|
|
|
|
|
@NoArgsConstructor |
|
|
|
|
|
@AllArgsConstructor |
|
|
class AssessAllMessage { |
|
|
class AssessAllMessage { |
|
|
private String message; |
|
|
private String message; |
|
|
private Long CleanTime; |
|
|
// 部分接口返回小数秒,需要用 Double
|
|
|
private Long AssessTime; |
|
|
@com.fasterxml.jackson.annotation.JsonProperty("CleanTime") |
|
|
|
|
|
private Double CleanTime; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("AssessTime") |
|
|
|
|
|
private Double AssessTime; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@lombok.Data |
|
|
@lombok.Data |
|
|
class AssessResult { |
|
|
class AssessResult { |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("amplitude") |
|
|
|
|
|
private List<Double> amplitude; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("far_variable") |
|
|
private List<Double> far_variable; |
|
|
private List<Double> far_variable; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("fdr_variable") |
|
|
private List<Double> fdr_variable; |
|
|
private List<Double> fdr_variable; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("Reconstruction_precision") |
|
|
private List<Double> Reconstruction_precision; |
|
|
private List<Double> Reconstruction_precision; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@lombok.Data |
|
|
@lombok.Data |
|
|
class AssessAll { |
|
|
class AssessAll { |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty(value = "Positive") |
|
|
private AssessResult Positive; |
|
|
private AssessResult Positive; |
|
|
|
|
|
// 兼容接口返回的小写 negative
|
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty(value = "negative") |
|
|
private AssessResult Negative; |
|
|
private AssessResult Negative; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -610,6 +757,7 @@ class AssessInput { |
|
|
private String inputInfo; |
|
|
private String inputInfo; |
|
|
private Integer indexType; |
|
|
private Integer indexType; |
|
|
private Integer sigmaType; |
|
|
private Integer sigmaType; |
|
|
|
|
|
@com.fasterxml.jackson.annotation.JsonProperty("exA_IP") |
|
|
private String exA_IP; |
|
|
private String exA_IP; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|