From 9d72545e1ebb81d80d11b6a6e683e5581cc322fc Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 03 六月 2024 14:56:31 +0800
Subject: [PATCH] 试卷类、枚举
---
src/main/java/com/ycl/jxkg/domain/entity/ExamPaperAnswer.java | 1
src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java | 51 +++
src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java | 82 +++++
src/main/resources/mapper/ExamTemplateMapper.xml | 91 ++++++
src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java | 123 ++++++++
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java | 92 ++++++
src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java | 4
src/main/java/com/ycl/jxkg/domain/query/ExamTemplateQuery.java | 17 +
src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java | 8
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamTemplateVO.java | 86 ++++++
src/main/java/com/ycl/jxkg/domain/enums/VisibilityEnum.java | 47 +++
src/main/java/com/ycl/jxkg/mapper/ExamTemplateMapper.java | 32 ++
src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java | 2
src/main/java/com/ycl/jxkg/controller/student/DashboardController.java | 2
src/main/java/com/ycl/jxkg/service/ExamTemplateService.java | 66 ++++
src/main/java/com/ycl/jxkg/domain/entity/UserEventLog.java | 2
src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java | 112 ++++++++
src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java | 4
src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java | 2
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java | 4
20 files changed, 816 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java
new file mode 100644
index 0000000..4ea99c1
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java
@@ -0,0 +1,82 @@
+package com.ycl.jxkg.controller.admin;
+
+import com.ycl.jxkg.base.Result;
+import com.ycl.jxkg.domain.form.ExamTemplateForm;
+import com.ycl.jxkg.domain.query.ExamTemplateQuery;
+import com.ycl.jxkg.group.Add;
+import com.ycl.jxkg.group.Update;
+import com.ycl.jxkg.service.ExamTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘 鍓嶇鎺у埗鍣�
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+@Validated
+@RequiredArgsConstructor
+@Api(value = "闅忔満璇曞嵎妯℃澘", tags = "闅忔満璇曞嵎妯℃澘绠$悊")
+@RestController
+@RequestMapping("/exam-template")
+public class ExamTemplateController {
+
+ private final ExamTemplateService examTemplateService;
+
+ @PostMapping
+ @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
+ @PreAuthorize("hasAuthority('examTemplate:add')")
+ public Result add(@RequestBody @Validated(Add.class) ExamTemplateForm form) {
+ return examTemplateService.add(form);
+ }
+
+ @PutMapping
+ @ApiOperation(value = "淇敼", notes = "淇敼")
+ @PreAuthorize("hasAuthority('examTemplate:edit')")
+ public Result update(@RequestBody @Validated(Update.class) ExamTemplateForm form) {
+ return examTemplateService.update(form);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
+ @PreAuthorize("hasAuthority('examTemplate:del')")
+ public Result removeById(@PathVariable("id") String id) {
+ return examTemplateService.removeById(id);
+ }
+
+ @DeleteMapping("/batch")
+ @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎")
+ @PreAuthorize("hasAuthority('examTemplate:del:batch')")
+ public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) {
+ return examTemplateService.remove(ids);
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉")
+ @PreAuthorize("hasAuthority('examTemplate:page')")
+ public Result page(ExamTemplateQuery query) {
+ return examTemplateService.page(query);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
+ @PreAuthorize("hasAuthority('examTemplate:detail')")
+ public Result detail(@PathVariable("id") Integer id) {
+ return examTemplateService.detail(id);
+ }
+
+ @GetMapping("/list")
+ @PreAuthorize("hasAuthority('examTemplate:list')")
+ @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
+ public Result list() {
+ return examTemplateService.all();
+ }
+}
diff --git a/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java b/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java
index b6981e0..dbc7927 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/DashboardController.java
@@ -49,7 +49,7 @@
PaperFilter timeLimitPaperFilter = new PaperFilter();
timeLimitPaperFilter.setDateTime(new Date());
timeLimitPaperFilter.setGradeLevel(user.getUserLevel());
- timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.TimeLimit.getCode());
+ timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.Random.getCode());
List<PaperInfo> limitPaper = examPaperService.indexPaper(timeLimitPaperFilter);
List<PaperInfoVO> paperInfoVOS = limitPaper.stream().map(d -> {
diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java
index 011e4e8..baf0ed9 100644
--- a/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java
+++ b/src/main/java/com/ycl/jxkg/controller/wx/student/DashboardController.java
@@ -52,7 +52,7 @@
PaperFilter timeLimitPaperFilter = new PaperFilter();
timeLimitPaperFilter.setDateTime(new Date());
timeLimitPaperFilter.setGradeLevel(user.getUserLevel());
- timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.TimeLimit.getCode());
+ timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.Random.getCode());
List<PaperInfo> limitPaper = examPaperService.indexPaper(timeLimitPaperFilter);
List<PaperInfoVO> paperInfoVOS = limitPaper.stream().map(d -> {
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
index e0c889d..29a0b03 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
@@ -51,6 +51,12 @@
private Integer questionCount;
/**
+ * 棰樼洰鍒嗘暟
+ */
+ @TableField("question_score")
+ private Integer questionScore;
+
+ /**
* 寤鸿鏃堕暱(鍒嗛挓)
*/
@TableField("suggest_time")
@@ -86,10 +92,12 @@
/**
* 鍙鎬э紝鍏紑/绉佹湁
* */
+ @TableField("visibility")
private String visibility;
/**
* 鎵e垎绫诲瀷
* */
+ @TableField("deduct_type")
private String deductType;
}
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperAnswer.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperAnswer.java
index 463fab9..8d0dbcf 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperAnswer.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamPaperAnswer.java
@@ -13,7 +13,6 @@
@TableName("t_exam_paper_answer")
public class ExamPaperAnswer extends AbsEntity {
-
@TableField("exam_paper_id")
private Integer examPaperId;
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
new file mode 100644
index 0000000..932af87
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
@@ -0,0 +1,92 @@
+package com.ycl.jxkg.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ycl.jxkg.domain.base.AbsEntity;
+import lombok.Data;
+
+import java.util.Date;
+/**
+ * 闅忔満璇曞嵎妯℃澘琛�
+ * */
+@Data
+@TableName("t_exam_template")
+public class ExamTemplate extends AbsEntity {
+ /**
+ * 妯℃澘鍚�
+ * */
+ @TableField("name")
+ private String name;
+
+ /**
+ * 瀛︾
+ * */
+ @TableField("subject_id")
+ private Integer subjectId;
+
+ /**
+ * 寤鸿鑰冭瘯鏃堕暱
+ * */
+ @TableField("suggest_time")
+ private Integer suggestTime;
+
+ /**
+ * 鍗曢�夐鏁伴噺
+ * */
+ @TableField("single_choice")
+ private Integer singleChoice;
+
+ /**
+ * 澶氶�夐鏁伴噺
+ * */
+ @TableField("multiple_choice")
+ private Integer multipleChoice;
+
+ /**
+ * 濉┖棰樻暟閲�
+ * */
+ @TableField("gap_filling")
+ private Integer gapFilling;
+
+ /**
+ * 鍒ゆ柇棰樻暟閲�
+ * */
+ @TableField("true_false")
+ private Integer trueFalse;
+
+ /**
+ * 绠�绛旈鏁伴噺
+ * */
+ @TableField("short_answer")
+ private Integer shortAnswer;
+
+ /**
+ * 璁$畻棰樻暟閲�
+ * */
+ @TableField("calculation")
+ private Integer calculation;
+
+ /**
+ * 鎬诲垎
+ * */
+ @TableField("score")
+ private Integer score;
+
+ /**
+ * 澶氶�夋墸鍒嗙被鍨�
+ * */
+ @TableField("deduct_type")
+ private String deductType;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ * */
+ @TableField("create_time")
+ private Date createTime;
+
+ /**
+ * 鍒涘缓浜�
+ * */
+ @TableField("create_user")
+ private Integer createUser;
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/UserEventLog.java b/src/main/java/com/ycl/jxkg/domain/entity/UserEventLog.java
index 6e3999f..7d09bb3 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/UserEventLog.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/UserEventLog.java
@@ -1,10 +1,8 @@
package com.ycl.jxkg.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
-import com.ycl.jxkg.domain.base.AbsEntity;
import lombok.Data;
-import java.io.Serializable;
import java.util.Date;
@Data
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java
new file mode 100644
index 0000000..31f7d09
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/enums/DeductTypeEnum.java
@@ -0,0 +1,51 @@
+package com.ycl.jxkg.domain.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum DeductTypeEnum {
+
+ AllCorrect(1, "绛旈敊涓嶅緱鍒�"),
+ PartCorrect(2, "婕忛�夊緱鍥哄畾鍒嗗�硷紝鍖呭惈閿欒閫夐」涓嶅緱鍒�"),
+ EachCorrect(3, "姣忓涓�棰樺緱鐩稿簲鍒嗗�硷紝鍖呭惈閿欒閫夐」涓嶅緱鍒�");
+
+ int code;
+ String name;
+
+ DeductTypeEnum(int code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+
+ private static final Map<Integer, DeductTypeEnum> keyMap = new HashMap<>();
+
+ static {
+ for (DeductTypeEnum item : DeductTypeEnum.values()) {
+ keyMap.put(item.getCode(), item);
+ }
+ }
+
+ public static DeductTypeEnum fromCode(Integer code) {
+ return keyMap.get(code);
+ }
+
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
+
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java
index 440d452..a1b51a5 100644
--- a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java
+++ b/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java
@@ -6,8 +6,8 @@
public enum ExamPaperTypeEnum {
Fixed(1, "鍥哄畾璇曞嵎"),
- TimeLimit(4, "鏃舵璇曞嵎"),
- Task(6, "浠诲姟璇曞嵎");
+ Random(2, "闅忔満璇曞嵎"),
+ RandomOrder(3, "闅忓簭璇曞嵎");
private final Integer code;
private final String name;
diff --git a/src/main/java/com/ycl/jxkg/domain/enums/VisibilityEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/VisibilityEnum.java
new file mode 100644
index 0000000..5606948
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/enums/VisibilityEnum.java
@@ -0,0 +1,47 @@
+package com.ycl.jxkg.domain.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum VisibilityEnum {
+ Private("绉佹湁", "鍙湁鑰佸笀鑷繁鑳界湅"),
+ Public("鍏紑", "鎵�鏈変汉鑳界湅");
+
+ String name;
+ String description;
+
+ VisibilityEnum(String name, String description) {
+ this.name = name;
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ private static final Map<String, VisibilityEnum> keyMap = new HashMap<>();
+
+ static {
+ for (VisibilityEnum item : VisibilityEnum.values()) {
+ keyMap.put(item.getName(), item);
+ }
+ }
+
+ public static VisibilityEnum fromCode(String name) {
+ return keyMap.get(name);
+ }
+
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java b/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java
new file mode 100644
index 0000000..5e90b25
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java
@@ -0,0 +1,112 @@
+package com.ycl.jxkg.domain.form;
+
+import com.ycl.jxkg.domain.base.AbsForm;
+import com.ycl.jxkg.domain.entity.ExamTemplate;
+import com.ycl.jxkg.group.Add;
+import com.ycl.jxkg.group.Update;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘琛ㄥ崟
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+@Data
+@ApiModel(value = "ExamTemplate琛ㄥ崟", description = "闅忔満璇曞嵎妯℃澘琛ㄥ崟")
+public class ExamTemplateForm extends AbsForm {
+
+ @NotBlank(message = "妯℃澘鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("妯℃澘鍚嶇О")
+ private String name;
+
+ @NotNull(message = "璇曞嵎绉戠洰涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("璇曞嵎绉戠洰")
+ private Integer subjectId;
+
+ @NotNull(message = "鑰冭瘯鏃堕暱(鍒嗛挓)涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鑰冭瘯鏃堕暱(鍒嗛挓)")
+ private Integer suggestTime;
+
+ @NotNull(message = "鍗曢�夐鏁伴噺涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍗曢�夐鏁伴噺")
+ private Integer singleChoice;
+
+ @NotNull(message = "澶氶�夐鏁伴噺涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("澶氶�夐鏁伴噺")
+ private Integer multipleChoice;
+
+ @NotNull(message = "濉┖棰樻暟閲忎笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("濉┖棰樻暟閲�")
+ private Integer gapFilling;
+
+ @NotNull(message = "鍒ゆ柇鏁伴噺涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍒ゆ柇鏁伴噺")
+ private Integer trueFalse;
+
+ @NotNull(message = "绠�绛旈鏁伴噺涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("绠�绛旈鏁伴噺")
+ private Integer shortAnswer;
+
+ @NotNull(message = "璁$畻棰樻暟閲忎笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("璁$畻棰樻暟閲�")
+ private Integer calculation;
+
+ @NotNull(message = "璇曞嵎鎬诲垎涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("璇曞嵎鎬诲垎")
+ private Integer score;
+
+ @NotBlank(message = "澶氶�夐鎵e垎鏂瑰紡涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("澶氶�夐鎵e垎鏂瑰紡")
+ private String deductType;
+
+ @NotNull(message = "鍒涘缓浜轰笉鑳戒负绌�", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍒涘缓浜�")
+ private Integer createUser;
+
+ @NotNull(message = "鍒涘缓鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ private LocalDateTime createTime;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private BigDecimal singleScore;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private BigDecimal multipleScore;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private BigDecimal gapScore;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private BigDecimal trueFalseScore;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private BigDecimal shortAnswerScore;
+
+ @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @ApiModelProperty("")
+ private BigDecimal calculationScore;
+
+ public static ExamTemplate getEntityByForm(@NonNull ExamTemplateForm form, ExamTemplate entity) {
+ if(entity == null) {
+ entity = new ExamTemplate();
+ }
+ BeanUtils.copyProperties(form, entity);
+ return entity;
+ }
+
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ExamTemplateQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ExamTemplateQuery.java
new file mode 100644
index 0000000..b61ccc3
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/query/ExamTemplateQuery.java
@@ -0,0 +1,17 @@
+package com.ycl.jxkg.domain.query;
+
+import com.ycl.jxkg.domain.base.AbsQuery;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘鏌ヨ
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+@Data
+@ApiModel(value = "ExamTemplate鏌ヨ", description = "闅忔満璇曞嵎妯℃澘鏌ヨ")
+public class ExamTemplateQuery extends AbsQuery {
+}
+
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamTemplateVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamTemplateVO.java
new file mode 100644
index 0000000..50a06de
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamTemplateVO.java
@@ -0,0 +1,86 @@
+package com.ycl.jxkg.domain.vo.admin.exam;
+
+import com.ycl.jxkg.domain.base.AbsVo;
+import com.ycl.jxkg.domain.entity.ExamTemplate;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘灞曠ず
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+@Data
+public class ExamTemplateVO extends AbsVo {
+
+ /** 妯℃澘鍚嶇О */
+ private String name;
+
+ /** 璇曞嵎绉戠洰 */
+ private Integer subjectId;
+
+ /** 鑰冭瘯鏃堕暱(鍒嗛挓) */
+ private Integer suggestTime;
+
+ /** 鍗曢�夐鏁伴噺 */
+ private Integer singleChoice;
+
+ /** 澶氶�夐鏁伴噺 */
+ private Integer multipleChoice;
+
+ /** 濉┖棰樻暟閲� */
+ private Integer gapFilling;
+
+ /** 鍒ゆ柇鏁伴噺 */
+ private Integer trueFalse;
+
+ /** 绠�绛旈鏁伴噺 */
+ private Integer shortAnswer;
+
+ /** 璁$畻棰樻暟閲� */
+ private Integer calculation;
+
+ /** 璇曞嵎鎬诲垎 */
+ private Integer score;
+
+ /** 澶氶�夐鎵e垎鏂瑰紡 */
+ private String deductType;
+
+ /** 鍒涘缓浜� */
+ private Integer createUser;
+
+ /** 鍒涘缓鏃堕棿 */
+ private Date createTime;
+
+ /** */
+ private BigDecimal singleScore;
+
+ /** */
+ private BigDecimal multipleScore;
+
+ /** */
+ private BigDecimal gapScore;
+
+ /** */
+ private BigDecimal trueFalseScore;
+
+ /** */
+ private BigDecimal shortAnswerScore;
+
+ /** */
+ private BigDecimal calculationScore;
+
+ public static ExamTemplateVO getVoByEntity(@NonNull ExamTemplate entity, ExamTemplateVO vo) {
+ if(vo == null) {
+ vo = new ExamTemplateVO();
+ }
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java b/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java
index bd2dcca..0a56336 100644
--- a/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java
+++ b/src/main/java/com/ycl/jxkg/listener/CalculateExamPaperAnswerListener.java
@@ -76,7 +76,7 @@
examPaperQuestionCustomerAnswerService.insertList(examPaperQuestionCustomerAnswers);
switch (ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
- case Task: {
+ case RandomOrder: {
examCustomerAnswerService.insertOrUpdate(examPaper, examPaperAnswer, now);
break;
}
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamTemplateMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamTemplateMapper.java
new file mode 100644
index 0000000..7d7e546
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/mapper/ExamTemplateMapper.java
@@ -0,0 +1,32 @@
+package com.ycl.jxkg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.jxkg.domain.entity.ExamTemplate;
+import com.ycl.jxkg.domain.query.ExamTemplateQuery;
+import com.ycl.jxkg.domain.vo.admin.exam.ExamTemplateVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘 Mapper 鎺ュ彛
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+@Mapper
+public interface ExamTemplateMapper extends BaseMapper<ExamTemplate> {
+
+ /**
+ * id鏌ユ壘闅忔満璇曞嵎妯℃澘
+ * @param id
+ * @return
+ */
+ ExamTemplateVO getById(Integer id);
+
+ /**
+ * 鍒嗛〉
+ */
+ IPage getPage(IPage page, @Param("query") ExamTemplateQuery query);
+
+}
diff --git a/src/main/java/com/ycl/jxkg/service/ExamTemplateService.java b/src/main/java/com/ycl/jxkg/service/ExamTemplateService.java
new file mode 100644
index 0000000..dc2c864
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/service/ExamTemplateService.java
@@ -0,0 +1,66 @@
+package com.ycl.jxkg.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.jxkg.base.Result;
+import com.ycl.jxkg.domain.entity.ExamTemplate;
+import com.ycl.jxkg.domain.form.ExamTemplateForm;
+import com.ycl.jxkg.domain.query.ExamTemplateQuery;
+
+import java.util.List;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘 鏈嶅姟绫�
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+public interface ExamTemplateService extends IService<ExamTemplate> {
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ Result add(ExamTemplateForm form);
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ Result update(ExamTemplateForm form);
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ Result remove(List<String> ids);
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ Result removeById(String id);
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ Result page(ExamTemplateQuery query);
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ Result detail(Integer id);
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ Result all();
+}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
index 11fe208..2d977e5 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
@@ -61,7 +61,7 @@
ExamPaper examPaper = examPaperMapper.selectById(examPaperSubmitVO.getId());
ExamPaperTypeEnum paperTypeEnum = ExamPaperTypeEnum.fromCode(examPaper.getPaperType());
//浠诲姟璇曞嵎鍙兘鍋氫竴娆�
- if (paperTypeEnum == ExamPaperTypeEnum.Task) {
+ if (paperTypeEnum == ExamPaperTypeEnum.RandomOrder) {
ExamPaperAnswer examPaperAnswer = examPaperAnswerMapper.getByPidUid(examPaperSubmitVO.getId(), user.getId());
if (null != examPaperAnswer)
return null;
@@ -118,7 +118,7 @@
ExamPaperTypeEnum examPaperTypeEnum = ExamPaperTypeEnum.fromCode(examPaperAnswer.getPaperType());
switch (examPaperTypeEnum) {
- case Task:
+ case RandomOrder:
//浠诲姟璇曞嵎鎵规敼瀹屾垚鍚庯紝闇�瑕佹洿鏂颁换鍔$殑鐘舵��
ExamPaper examPaper = examPaperMapper.selectById(examPaperAnswer.getExamPaperId());
Integer taskId = examPaper.getTaskExamId();
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
index 227d86f..367300d 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
@@ -128,7 +128,7 @@
}).collect(Collectors.toList());
vo.setTitleItems(examPaperTitleItemVOS);
vo.setScore(ExamUtil.scoreToVM(examPaper.getScore()));
- if (ExamPaperTypeEnum.TimeLimit == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
+ if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
List<String> limitDateTime = Arrays.asList(DateTimeUtil.dateFormat(examPaper.getLimitStartTime()), DateTimeUtil.dateFormat(examPaper.getLimitEndTime()));
vo.setLimitDateTime(limitDateTime);
}
@@ -170,7 +170,7 @@
examPaper.setScore(score);
examPaper.setGradeLevel(gradeLevel);
List<String> dateTimes = examPaperEditRequestVO.getLimitDateTime();
- if (ExamPaperTypeEnum.TimeLimit == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
+ if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
examPaper.setLimitStartTime(DateTimeUtil.parse(dateTimes.get(0), DateTimeUtil.STANDER_FORMAT));
examPaper.setLimitEndTime(DateTimeUtil.parse(dateTimes.get(1), DateTimeUtil.STANDER_FORMAT));
}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java
new file mode 100644
index 0000000..5ebc5cb
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java
@@ -0,0 +1,123 @@
+package com.ycl.jxkg.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Assert;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.base.Result;
+import com.ycl.jxkg.domain.entity.ExamTemplate;
+import com.ycl.jxkg.domain.form.ExamTemplateForm;
+import com.ycl.jxkg.domain.query.ExamTemplateQuery;
+import com.ycl.jxkg.domain.vo.admin.exam.ExamTemplateVO;
+import com.ycl.jxkg.mapper.ExamTemplateMapper;
+import com.ycl.jxkg.service.ExamTemplateService;
+import com.ycl.jxkg.utils.PageUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 闅忔満璇曞嵎妯℃澘 鏈嶅姟瀹炵幇绫�
+ *
+ * @author 寮�鍙戜汉鍛樺悕瀛�
+ * @since 2024-06-03
+ */
+@Service
+@RequiredArgsConstructor
+public class ExamTemplateServiceImpl extends ServiceImpl<ExamTemplateMapper, ExamTemplate> implements ExamTemplateService {
+
+ private final ExamTemplateMapper examTemplateMapper;
+
+ /**
+ * 娣诲姞
+ * @param form
+ * @return
+ */
+ @Override
+ public Result add(ExamTemplateForm form) {
+ ExamTemplate entity = ExamTemplateForm.getEntityByForm(form, null);
+ baseMapper.insert(entity);
+ return Result.ok("娣诲姞鎴愬姛");
+ }
+
+ /**
+ * 淇敼
+ * @param form
+ * @return
+ */
+ @Override
+ public Result update(ExamTemplateForm form) {
+ ExamTemplate entity = baseMapper.selectById(form.getId());
+
+ // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+ BeanUtils.copyProperties(form, entity);
+ baseMapper.updateById(entity);
+ return Result.ok("淇敼鎴愬姛");
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎
+ * @param ids
+ * @return
+ */
+ @Override
+ public Result remove(List<String> ids) {
+ baseMapper.deleteBatchIds(ids);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * id鍒犻櫎
+ * @param id
+ * @return
+ */
+ @Override
+ public Result removeById(String id) {
+ baseMapper.deleteById(id);
+ return Result.ok("鍒犻櫎鎴愬姛");
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ @Override
+ public Result page(ExamTemplateQuery query) {
+ IPage<ExamTemplateVO> page = PageUtil.getPage(query, ExamTemplateVO.class);
+ baseMapper.getPage(page, query);
+ PageInfo<ExamTemplateVO> pageInfo = new PageInfo<>();
+ pageInfo.setList(page.getRecords());
+ pageInfo.setTotal(page.getTotal());
+ return Result.ok(pageInfo);
+ }
+
+ /**
+ * 鏍规嵁id鏌ユ壘
+ * @param id
+ * @return
+ */
+ @Override
+ public Result detail(Integer id) {
+ ExamTemplateVO vo = baseMapper.getById(id);
+ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ return Result.ok(vo);
+ }
+
+ /**
+ * 鍒楄〃
+ * @return
+ */
+ @Override
+ public Result all() {
+ List<ExamTemplate> entities = baseMapper.selectList(null);
+ List<ExamTemplateVO> vos = entities.stream()
+ .map(entity -> ExamTemplateVO.getVoByEntity(entity, null))
+ .collect(Collectors.toList());
+ return Result.ok(vos);
+ }
+}
diff --git a/src/main/resources/mapper/ExamTemplateMapper.xml b/src/main/resources/mapper/ExamTemplateMapper.xml
new file mode 100644
index 0000000..9edd4df
--- /dev/null
+++ b/src/main/resources/mapper/ExamTemplateMapper.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.monkeylessey.mapper.ExamTemplateMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.admin.exam.ExamTemplateVO">
+ <result column="name" property="name" />
+ <result column="subject_id" property="subjectId" />
+ <result column="suggest_time" property="suggestTime" />
+ <result column="single_choice" property="singleChoice" />
+ <result column="multiple_choice" property="multipleChoice" />
+ <result column="gap_filling" property="gapFilling" />
+ <result column="true_false" property="trueFalse" />
+ <result column="short_answer" property="shortAnswer" />
+ <result column="calculation" property="calculation" />
+ <result column="score" property="score" />
+ <result column="deduct_type" property="deductType" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ <result column="single_score" property="singleScore" />
+ <result column="multiple_score" property="multipleScore" />
+ <result column="gap_score" property="gapScore" />
+ <result column="true_false_score" property="trueFalseScore" />
+ <result column="short_answer_score" property="shortAnswerScore" />
+ <result column="calculation__score" property="calculationScore" />
+ </resultMap>
+
+
+
+
+
+
+
+ <select id="getById" resultMap="BaseResultMap">
+ SELECT
+ TET.name,
+ TET.subject_id,
+ TET.suggest_time,
+ TET.single_choice,
+ TET.multiple_choice,
+ TET.gap_filling,
+ TET.true_false,
+ TET.short_answer,
+ TET.calculation,
+ TET.score,
+ TET.deduct_type,
+ TET.create_user,
+ TET.create_time,
+ TET.single_score,
+ TET.multiple_score,
+ TET.gap_score,
+ TET.true_false_score,
+ TET.short_answer_score,
+ TET.calculation__score,
+ TET.id
+ FROM
+ t_exam_template TET
+ WHERE
+ TET.id = #{id} AND TET.deleted = 0
+ </select>
+
+
+ <select id="getPage" resultMap="BaseResultMap">
+ SELECT
+ TET.name,
+ TET.subject_id,
+ TET.suggest_time,
+ TET.single_choice,
+ TET.multiple_choice,
+ TET.gap_filling,
+ TET.true_false,
+ TET.short_answer,
+ TET.calculation,
+ TET.score,
+ TET.deduct_type,
+ TET.create_user,
+ TET.create_time,
+ TET.single_score,
+ TET.multiple_score,
+ TET.gap_score,
+ TET.true_false_score,
+ TET.short_answer_score,
+ TET.calculation__score,
+ TET.id
+ FROM
+ t_exam_template TET
+ WHERE
+ TET.deleted = 0
+ </select>
+
+</mapper>
--
Gitblit v1.8.0