From 5ada29cec4b0c4a339a3e1c207363ae71e02c42f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 11 六月 2024 14:55:31 +0800
Subject: [PATCH] 考试管理、bug处理
---
src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java | 2
src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java | 55 ++++++++++++++++++
src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java | 7 ++
src/main/resources/mapper/ClassesMapper.xml | 2
src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java | 8 ++
src/main/resources/mapper/ExamMapper.xml | 15 ++++
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java | 3 +
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 7 ++
src/main/java/com/ycl/jxkg/domain/entity/Classes.java | 3
src/main/java/com/ycl/jxkg/domain/entity/Exam.java | 15 +++--
src/main/java/com/ycl/jxkg/domain/form/ExamForm.java | 7 +
11 files changed, 111 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
index a8af373..8956d34 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java
@@ -1,5 +1,6 @@
package com.ycl.jxkg.domain.entity;
+import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -53,6 +54,6 @@
/** 澶囨敞 */
private String remark;
- @TableField("create_time")
+ @TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
}
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Exam.java b/src/main/java/com/ycl/jxkg/domain/entity/Exam.java
index c5f9cbb..54e6def 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Exam.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Exam.java
@@ -1,10 +1,12 @@
package com.ycl.jxkg.domain.entity;
+import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDateTime;
+import java.util.Date;
import com.ycl.jxkg.domain.base.AbsEntity;
+import com.ycl.jxkg.enums.general.ExamStatusEnum;
import lombok.Data;
/**
@@ -33,7 +35,7 @@
@TableField("exam_paper_type")
/** 璇曞嵎绫诲瀷 */
- private String examPaperType;
+ private Integer examPaperType;
@TableField("exam_place")
/** 鑰冭瘯鍦扮偣 */
@@ -41,19 +43,20 @@
@TableField("status")
/** 鑰冭瘯鐘舵�� */
- private String status;
+ private ExamStatusEnum status;
@TableField("start_time")
/** 寮�濮嬫椂闂� */
- private LocalDateTime startTime;
+ private Date startTime;
@TableField("end_time")
/** 缁撴潫鏃堕棿 */
- private LocalDateTime endTime;
+ private Date endTime;
@TableField("teacher_id")
/** 鍒涘缓鑰佸笀 */
private Integer teacherId;
-
+ @TableField(value = "create_time", fill = FieldFill.INSERT)
+ private Date createTime;
}
diff --git a/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java b/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
index c8c20bf..7f2b50b 100644
--- a/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
+++ b/src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
@@ -1,5 +1,6 @@
package com.ycl.jxkg.domain.form;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.group.Add;
import com.ycl.jxkg.domain.base.AbsForm;
@@ -35,9 +36,9 @@
@ApiModelProperty("鐝骇ID")
private Integer classesId;
- @NotBlank(message = "璇曞嵎绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+ @NotNull(message = "璇曞嵎绫诲瀷涓嶈兘涓虹┖", groups = {Add.class, Update.class})
@ApiModelProperty("璇曞嵎绫诲瀷")
- private String examPaperType;
+ private Integer examPaperType;
@NotBlank(message = "鑰冭瘯鍦扮偣涓嶈兘涓虹┖", groups = {Add.class, Update.class})
@ApiModelProperty("鑰冭瘯鍦扮偣")
@@ -45,10 +46,12 @@
@NotNull(message = "寮�濮嬫椂闂翠笉鑳戒负绌�", groups = {Add.class, Update.class})
@ApiModelProperty("寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@NotNull(message = "缁撴潫鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class})
@ApiModelProperty("缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
public static Exam getEntityByForm(@NonNull ExamForm form, Exam entity) {
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
index c28defa..dbb756b 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java
@@ -26,5 +26,7 @@
/** 鐝骇鐘舵�� */
private String status;
+ private Integer userId;
+
}
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
index cd0905a..1213f10 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/ExamQuery.java
@@ -18,5 +18,12 @@
@Data
@ApiModel(value = "Exam鏌ヨ", description = "鑰冭瘯鏌ヨ")
public class ExamQuery extends AbsQuery {
+
+ /** 鑰冭瘯鍚嶇О */
+ private String examName;
+
+ /** 鐝骇 */
+ private Integer classesId;
+
}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java
index 5054d4c..86f7669 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ExamVO.java
@@ -1,5 +1,6 @@
package com.ycl.jxkg.domain.vo;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.jxkg.domain.base.AbsVo;
import com.ycl.jxkg.domain.entity.Exam;
import java.util.List;
@@ -24,12 +25,14 @@
/** 璇曞嵎ID */
private Integer examPaperId;
+ private String examPaperName;
/** 鐝骇ID */
private Integer classesId;
+ private String className;
/** 璇曞嵎绫诲瀷 */
- private String examPaperType;
+ private Integer examPaperType;
/** 鑰冭瘯鍦扮偣 */
private String examPlace;
@@ -38,12 +41,15 @@
private String status;
/** 寮�濮嬫椂闂� */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/** 缁撴潫鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 鍒涘缓鑰佸笀 */
diff --git a/src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java b/src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java
new file mode 100644
index 0000000..03037d0
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/enums/general/ExamStatusEnum.java
@@ -0,0 +1,55 @@
+package com.ycl.jxkg.enums.general;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.Getter;
+
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 鑰冭瘯鐘舵��
+ *
+ * @author锛歺p
+ * @date锛�2024/6/4 9:35
+ */
+@Getter
+public enum ExamStatusEnum {
+
+ NOT_START("not_start", "鏈紑濮�"),
+ ING("ing", "杩涜涓�"),
+ FINISHED("finished", "宸茬粨鏉�"),
+ ;
+
+ @EnumValue
+ private final String value;
+
+ @JsonValue
+ private final String desc;
+
+ ExamStatusEnum(String value, String desc) {
+ this.value = value;
+ this.desc = desc;
+ }
+
+ /**
+ * 鍒ゆ柇褰撳墠鏃堕棿瀵瑰簲鐨勮�冭瘯鐘舵��
+ *
+ * @param start
+ * @param end
+ * @param now
+ * @return
+ */
+ public static ExamStatusEnum getStatusByTime(Date start, Date end, Date now) {
+ if (Objects.isNull(now)) {
+ now = new Date();
+ }
+ if (now.after(end)) {
+ return FINISHED;
+ } else if (now.before(start)) {
+ return NOT_START;
+ } else {
+ return ING;
+ }
+ }
+}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
index c93615e..d4b08a9 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -43,6 +43,8 @@
@Override
public Result add(ClassesForm form) {
Classes entity = ClassesForm.getEntityByForm(form, null);
+ entity.setStatus(ClassesStatusEnum.NORMAL);
+ entity.setCreateUser(webContext.getCurrentUser().getId());
baseMapper.insert(entity);
return Result.ok("娣诲姞鎴愬姛");
}
@@ -93,6 +95,7 @@
@Override
public Result page(ClassesQuery query) {
IPage<ClassesVO> page = PageUtil.getPage(query, ClassesVO.class);
+ query.setUserId(webContext.getCurrentUser().getId());
baseMapper.getPage(page, query);
return Result.ok().data(page.getRecords()).total(page.getTotal());
}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
index 378a11c..afbca10 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -1,7 +1,9 @@
package com.ycl.jxkg.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.jxkg.context.WebContext;
import com.ycl.jxkg.domain.entity.Exam;
+import com.ycl.jxkg.enums.general.ExamStatusEnum;
import com.ycl.jxkg.mapper.ExamMapper;
import com.ycl.jxkg.service.ExamService;
import com.ycl.jxkg.base.Result;
@@ -29,6 +31,7 @@
public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements ExamService {
private final ExamMapper examMapper;
+ private final WebContext webContext;
/**
* 娣诲姞
@@ -38,6 +41,8 @@
@Override
public Result add(ExamForm form) {
Exam entity = ExamForm.getEntityByForm(form, null);
+ entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null));
+ entity.setTeacherId(webContext.getCurrentUser().getId());
baseMapper.insert(entity);
return Result.ok("娣诲姞鎴愬姛");
}
@@ -50,10 +55,10 @@
@Override
public Result update(ExamForm form) {
Exam entity = baseMapper.selectById(form.getId());
-
// 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
BeanUtils.copyProperties(form, entity);
+ entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null));
baseMapper.updateById(entity);
return Result.ok("淇敼鎴愬姛");
}
diff --git a/src/main/resources/mapper/ClassesMapper.xml b/src/main/resources/mapper/ClassesMapper.xml
index 2481ae5..302924c 100644
--- a/src/main/resources/mapper/ClassesMapper.xml
+++ b/src/main/resources/mapper/ClassesMapper.xml
@@ -63,7 +63,7 @@
t_classes TC
LEFT JOIN t_user TU ON TU.id = TC.create_user AND TU.deleted = 0
WHERE
- TC.deleted = 0
+ TC.deleted = 0 AND TC.create_user = #{query.userId}
<if test="query.className != null and query.className != ''">
AND TC.class_name like concat('%', #{query.className}, '%')
</if>
diff --git a/src/main/resources/mapper/ExamMapper.xml b/src/main/resources/mapper/ExamMapper.xml
index 4961fc1..62d1c81 100644
--- a/src/main/resources/mapper/ExamMapper.xml
+++ b/src/main/resources/mapper/ExamMapper.xml
@@ -14,6 +14,8 @@
<result column="end_time" property="endTime" />
<result column="create_time" property="createTime" />
<result column="teacher_id" property="teacherId" />
+ <result column="class_name" property="className" />
+ <result column="name" property="examPaperName" />
</resultMap>
@@ -54,11 +56,22 @@
TE.end_time,
TE.create_time,
TE.teacher_id,
- TE.id
+ TE.id,
+ TC.class_name,
+ TEP.name
FROM
t_exam TE
+ INNER JOIN t_user TU ON TU.id = TE.teacher_id AND TU.deleted = 0
+ INNER JOIN t_classes TC ON TC.id = TE.classes_id AND TC.deleted = 0
+ INNER JOIN t_exam_paper TEP ON TEP.id = TE.exam_paper_id AND TEP.deleted = 0
WHERE
TE.deleted = 0
+ <if test="query.examName != null and query.examName != ''">
+ AND TE.exam_name like concat('%', #{query.examName}, '%')
+ </if>
+ <if test="query.classesId != null">
+ AND TE.classes_id = #{query.classesId}
+ </if>
</select>
</mapper>
--
Gitblit v1.8.0