src/main/java/com/ycl/jxkg/controller/admin/ExamTemplateController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/form/ExamTemplateForm.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/ExamTemplateVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/enums/VisibilityEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/impl/ExamTemplateServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/ExamTemplateMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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,