lohir
2024-10-17 24aed3ad1b13355cc587378c0fa28a77f1e776e6
解决考试时间创建和修改会向后推8小时的问题
2个文件已修改
23 ■■■■ 已修改文件
src/main/java/com/ycl/jxkg/domain/form/ExamForm.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/ExamForm.java
@@ -46,12 +46,12 @@
    @NotNull(message = "开始时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date startTime;
    @NotNull(message = "结束时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date endTime;
    public static Exam getEntityByForm(@NonNull ExamForm form, Exam entity) {
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -91,6 +91,8 @@
    @Override
    public Result add(ExamForm form) {
        Exam entity = ExamForm.getEntityByForm(form, null);
        form.getStartTime().setTime(form.getStartTime().getTime() - 8 * 60 * 60 * 1000);
        form.getEndTime().setTime(form.getEndTime().getTime() - 8 * 60 * 60 * 1000);
        entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null));
        entity.setTeacherId(webContext.getCurrentUser().getId());
        // 设置乐观锁版本
@@ -116,8 +118,11 @@
        if (!ExamStatusEnum.NOT_START.equals(entity.getStatus())) {
            throw new RuntimeException("只能修改还未开始的考试");
        }
        // 将开始考试时间想前推8小时
        form.getStartTime().setTime(form.getStartTime().getTime() - 8 * 60 * 60 * 1000);
        form.getEndTime().setTime(form.getEndTime().getTime() - 8 * 60 * 60 * 1000);
        BeanUtils.copyProperties(form, entity);
        entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null));
        entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), new Date()));
        // 如果修改成功发送mq消息
        if (baseMapper.updateById(entity) > 0) {
            this.sendMQ(entity, entity.getUpdateVersion());
@@ -214,6 +219,7 @@
                item.setExamPaperId(null);
            }
        });
        //
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
@@ -954,7 +960,7 @@
    /**
     * 作废
     *
     * @param examId
     * @param id
     * @return {@link Result }
     * @author
     */
@@ -977,13 +983,8 @@
        Date currentTime = new Date();
        Date startTime = examInfo.getStartTime();
        Date endTime = examInfo.getEndTime();
        if (currentTime.before(startTime)) {
            examInfo.setStatus(ExamStatusEnum.NOT_START);
        } else if (currentTime.after(startTime) && currentTime.before(endTime)) {
            examInfo.setStatus(ExamStatusEnum.ING);
        } else {
            examInfo.setStatus(ExamStatusEnum.FINISHED);
        }
        ExamStatusEnum statusByTime = ExamStatusEnum.getStatusByTime(startTime, endTime, currentTime);
        examInfo.setStatus(statusByTime);
        // 修改当前的考试状态
        new LambdaUpdateChainWrapper<>(examMapper)
                .eq(Exam::getId, id)