package space.anyi.serve.entity.contest; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; @Schema(description = "提交记录响应展示对象") public class SubmissionVo { @Schema(description = "提交ID") private Long id; @Schema(description = "题目ID") private Long problemId; @Schema(description = "比赛ID,练习提交为null") private Long contestId; @Schema(description = "提交语言") private String language; @Schema(description = "判题状态:SUBMITTED-已提交,JUDGING-判题中,AC-通过,WA-答案错误,TLE-超时,MLE-内存超限,RE-运行错误,CE-编译失败,SE-系统错误") private String status; @Schema(description = "执行时间(毫秒)") private Integer timeUsedMs; @Schema(description = "内存使用(KB)") private Integer memoryUsedKb; @Schema(description = "得分") private Integer score; @Schema(description = "总测试用例数") private Integer totalTestCases; @Schema(description = "通过测试用例数") private Integer passedTestCases; @Schema(description = "判题详情(CE/SE时展示错误信息)") private String judgeDetail; @Schema(description = "提交时间") private LocalDateTime createdAt; public static SubmissionVo from(Submission submission) { SubmissionVo vo = new SubmissionVo(); if (Objects.isNull(submission)) { return vo; } vo.setId(submission.getId()); vo.setProblemId(submission.getProblemId()); vo.setContestId(submission.getContestId()); vo.setLanguage(submission.getLanguage()); vo.setStatus(submission.getStatus()); vo.setTimeUsedMs(submission.getTimeUsedMs()); vo.setMemoryUsedKb(submission.getMemoryUsedKb()); vo.setScore(submission.getScore()); vo.setTotalTestCases(submission.getTotalTestCases()); vo.setPassedTestCases(submission.getPassedTestCases()); vo.setJudgeDetail(submission.getJudgeDetail()); vo.setCreatedAt(submission.getCreatedAt()); return vo; } public static List from(List list) { List result = new ArrayList<>(); for (Submission submission : list) { result.add(SubmissionVo.from(submission)); } return result; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getProblemId() { return problemId; } public void setProblemId(Long problemId) { this.problemId = problemId; } public Long getContestId() { return contestId; } public void setContestId(Long contestId) { this.contestId = contestId; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public Integer getTimeUsedMs() { return timeUsedMs; } public void setTimeUsedMs(Integer timeUsedMs) { this.timeUsedMs = timeUsedMs; } public Integer getMemoryUsedKb() { return memoryUsedKb; } public void setMemoryUsedKb(Integer memoryUsedKb) { this.memoryUsedKb = memoryUsedKb; } public Integer getScore() { return score; } public void setScore(Integer score) { this.score = score; } public Integer getTotalTestCases() { return totalTestCases; } public void setTotalTestCases(Integer totalTestCases) { this.totalTestCases = totalTestCases; } public Integer getPassedTestCases() { return passedTestCases; } public void setPassedTestCases(Integer passedTestCases) { this.passedTestCases = passedTestCases; } public String getJudgeDetail() { return judgeDetail; } public void setJudgeDetail(String judgeDetail) { this.judgeDetail = judgeDetail; } public LocalDateTime getCreatedAt() { return createdAt; } public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } }