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