fuliqi
2024-06-07 fdaba78e25c457c48c4581cc84635b63d6363176
新增模板及校验
7个文件已修改
116 ■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamTemplateMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java
@@ -1,10 +1,13 @@
package com.ycl.jxkg.controller.admin;
import com.ycl.jxkg.base.SystemCode;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.group.Add;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.RequiredArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotEmpty;
@@ -16,6 +19,9 @@
import com.ycl.jxkg.domain.query.ExamTemplateQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import static com.ycl.jxkg.enums.DeductTypeEnum.EachCorrect;
import static com.ycl.jxkg.enums.DeductTypeEnum.PartCorrect;
/**
 * 随机试卷模板 前端控制器
@@ -31,10 +37,13 @@
public class ExamTemplateController {
    private final ExamTemplateService examTemplateService;
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
    public Result add(@RequestBody @Validated(Add.class) ExamTemplateForm form) {
        //参数校验
        if(form.getDeductType()!=null && (form.getDeductType() ==PartCorrect.getCode() || form.getDeductType() == EachCorrect.getCode()) && (form.getDeductTypeScore() ==null || form.getDeductTypeScore().compareTo(BigDecimal.ZERO) <= 0)){
                return Result.fail(SystemCode.ParameterValidError.getCode(),"多选评分不能为0或空");
        }
        return examTemplateService.add(form);
    }
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
@@ -3,9 +3,11 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.jxkg.domain.base.AbsEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 随机试卷模板
@@ -29,7 +31,7 @@
    @TableField("score")
    /** 总分 */
    private Integer score;
    private BigDecimal score;
    @TableField("visibility")
    /** 是否私有 */
@@ -42,6 +44,9 @@
    @TableField("deduct_type")
    /** 多选扣分类型 */
    private Integer deductType;
    @TableField("deduct_type_score")
    private BigDecimal deductTypeScore;
    @TableField("single_choice")
    /** 单选题数量 */
@@ -95,5 +100,7 @@
    /**  */
    private Integer createUser;
    @TableField("create_time")
    /**  */
    private Date createTime;
}
src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java
@@ -1,20 +1,20 @@
package com.ycl.jxkg.domain.form;
import com.ycl.jxkg.domain.question.TemplateQuestionDTO;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.group.Add;
import com.ycl.jxkg.domain.base.AbsForm;
import com.ycl.jxkg.domain.entity.ExamTemplate;
import org.springframework.beans.BeanUtils;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import org.springframework.lang.NonNull;
import com.ycl.jxkg.domain.question.TemplateQuestionDTO;
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.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
@@ -36,18 +36,21 @@
    private Integer subjectId;
    @ApiModelProperty("总分")
    private Integer score;
    private BigDecimal score;
    @ApiModelProperty("是否私有")
    private String visibility;
    @NotNull(message = "建议时间不能为空", groups = {Add.class, Update.class})
    @Min(value = 1,message = "建议时间必须大于0",groups = {Add.class, Update.class})
    @ApiModelProperty("建议时间")
    private Integer suggestTime;
    @ApiModelProperty("多选扣分类型")
    private Integer deductType;
    @ApiModelProperty("多选扣分")
    private BigDecimal deductTypeScore;
    @ApiModelProperty("题目模板")
    private List<TemplateQuestionDTO> questionList;
src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java
@@ -39,6 +39,9 @@
    /** 多选扣分类型 */
    private Integer deductType;
    /** 多选评分 */
    private BigDecimal deductTypeScore;
    /** 单选题数量 */
    private Integer singleChoice;
src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java
@@ -1,4 +1,4 @@
package com.ycl.jxkg.domain.enums;
package com.ycl.jxkg.enums;
import java.util.HashMap;
import java.util.Map;
src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java
@@ -1,7 +1,12 @@
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.ExamTemplate;
import com.ycl.jxkg.domain.entity.User;
import com.ycl.jxkg.domain.question.TemplateQuestionDTO;
import com.ycl.jxkg.enums.QuestionTypeEnum;
import com.ycl.jxkg.enums.VisibilityEnum;
import com.ycl.jxkg.mapper.ExamTemplateMapper;
import com.ycl.jxkg.service.ExamTemplateService;
import com.ycl.jxkg.base.Result;
@@ -9,12 +14,21 @@
import com.ycl.jxkg.domain.form.ExamTemplateForm;
import com.ycl.jxkg.domain.vo.ExamTemplateVO;
import com.ycl.jxkg.domain.query.ExamTemplateQuery;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import com.ycl.jxkg.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.security.Security;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -28,6 +42,9 @@
@RequiredArgsConstructor
public class ExamTemplateServiceImpl extends ServiceImpl<ExamTemplateMapper, ExamTemplate> implements ExamTemplateService {
    @Autowired
    protected WebContext webContext;
    private final ExamTemplateMapper examTemplateMapper;
    /**
@@ -38,6 +55,52 @@
    @Override
    public Result add(ExamTemplateForm form) {
        ExamTemplate entity = ExamTemplateForm.getEntityByForm(form, null);
        User currentUser = webContext.getCurrentUser();
        entity.setCreateUser(currentUser.getId());
        entity.setCreateTime(new Date());
        if(!StringUtils.isEmpty(entity.getVisibility())) {
            entity.setVisibility(VisibilityEnum.fromCode(Integer.parseInt(entity.getVisibility())).getName());
        }
        List<TemplateQuestionDTO> questionList = form.getQuestionList();
        BigDecimal score = BigDecimal.ZERO;
        //设置题目信息
        for (TemplateQuestionDTO dto : questionList) {
            score = score.add(dto.getScore().multiply(BigDecimal.valueOf(dto.getNum())));
            Integer questionType = dto.getQuestionType();
            switch (QuestionTypeEnum.fromCode(questionType)){
                //单选
                case SingleChoice:
                    entity.setSingleChoice(dto.getNum());
                    entity.setSingleScore(dto.getScore());
                    break;
                //多选
                case MultipleChoice:
                    entity.setMultipleChoice(dto.getNum());
                    entity.setMultipleScore(dto.getScore());
                    break;
                //判断
                case TrueFalse:
                    entity.setTrueFalse(dto.getNum());
                    entity.setTrueFalseScore(dto.getScore());
                    break;
                //填空
                case GapFilling:
                    entity.setGapFilling(dto.getNum());
                    entity.setGapScore(dto.getScore());
                    break;
                //简答
                case ShortAnswer:
                    entity.setShortAnswer(dto.getNum());
                    entity.setShortAnswerScore(dto.getScore());
                    break;
                //计算
                case Calculation:
                    entity.setCalculation(dto.getNum());
                    entity.setCalculationScore(dto.getScore());
                    break;
            }
        }
        entity.setScore(score);
        baseMapper.insert(entity);
        return Result.ok("添加成功");
    }
src/main/resources/mapper/ExamTemplateMapper.xml
@@ -10,6 +10,7 @@
        <result column="visibility" property="visibility" />
        <result column="suggest_time" property="suggestTime" />
        <result column="deduct_type" property="deductType" />
        <result column="deduct_type_score" property="deductTypeScore" />
        <result column="single_choice" property="singleChoice" />
        <result column="multiple_choice" property="multipleChoice" />
        <result column="gap_filling" property="gapFilling" />
@@ -40,6 +41,7 @@
            TET.visibility,
            TET.suggest_time,
            TET.deduct_type,
            TET.deduct_type_score,
            TET.single_choice,
            TET.multiple_choice,
            TET.gap_filling,
@@ -70,6 +72,7 @@
            TET.visibility,
            TET.suggest_time,
            TET.deduct_type,
            TET.deduct_type_score,
            TET.single_choice,
            TET.multiple_choice,
            TET.gap_filling,