qirong
2023-11-30 07ef4ae0fc211fbe6006c525002ed65ce854a1f2
重置试卷
12个文件已修改
1个文件已添加
1个文件已删除
4705 ■■■■■ 已修改文件
log/xzs.20231129.log 4326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/AnswerResponesVo.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/ExamTemplatesMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/ExamTemplatesService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/viewmodel/student/exam/ExamPaperSubmitVM.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/logback-spring.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperAnswerMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamTemplatesMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
log/xzs.20231129.log
File was deleted
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
@@ -21,6 +21,7 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
@@ -48,10 +49,10 @@
        PageInfo<ExamPaperAnswerPageResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> {
            ExamPaperAnswerPageResponseVM vm = modelMapper.map(e, ExamPaperAnswerPageResponseVM.class);
            User user = userService.selectByIdName(e.getCreateUser(), model.getUserName());
            if (user == null) {
                return null;
            }
//            User user = userService.selectByIdName(e.getCreateUser(), model.getUserName());
//            if (user == null) {
//                return null;
//            }
//            Subject subject = subjectService.selectById(vm.getSubjectId());
            ExamPaperAnswer examPaperAnswer = examPaperAnswerService.getById(vm.getId());
            Integer[] ids = examPaperSubjectService.getByExamPaperId(examPaperAnswer.getExamPaperId())
@@ -68,11 +69,11 @@
            vm.setSubjectName(name);
            vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
            vm.setUserName(user.getRealName());
//            vm.setUserName(user.getRealName());
            return vm;
        });
        page.setList(page.getList().stream().filter(e -> e != null).collect(Collectors.toList()));
        if (page.getSize() > 0) {
//        page.setList(page.getList().stream().filter(e -> e != null).collect(Collectors.toList()));
        if (page.getList().size() > 0) {
            Double avg = page.getList().stream().mapToInt(ExamPaperAnswerPageResponseVM -> Integer.parseInt(ExamPaperAnswerPageResponseVM.getUserScore())).average().getAsDouble();
            page.getList().get(0).setAvgSource(avg);
        }
@@ -102,8 +103,10 @@
            Integer max = examPaperAnswers.stream().map(ExamPaperAnswer::getUserScore).max(Integer::compareTo).get();
            Integer min = examPaperAnswers.stream().map(ExamPaperAnswer::getUserScore).min(Integer::compareTo).get();
            Double avg = examPaperAnswers.stream().mapToDouble(ExamPaperAnswer::getUserScore).average().getAsDouble();
            BigDecimal two = new BigDecimal(avg);
            Double three = two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
            object.setAdvanced(advanced);
            object.setAvg(avg);
            object.setAvg(three);
            object.setIntermediate(intermediate);
            object.setMax(max);
            object.setMin(min);
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java
@@ -111,7 +111,7 @@
        PageInfo<User> info = PageHelper.startPage(grade.getPageIndex(), grade.getPageSize(), "id desc").doSelectPageInfo(() ->
                userService.getUsers());
        for (User user : info.getList()) {
            if(user.getRealName().equals("管理员")){
            if("管理员".equals(user.getRealName())){
                continue;
            }
            ExamPaperAnswer answer = new ExamPaperAnswer();
@@ -123,46 +123,6 @@
            answer.setCounts(byCreatUser.size());
            filteredList9.add(answer);
        }
//        PageInfo<ExamPaperAnswer> list = examPaperAnswerService.adminPageByGrade(grade);
//        for (ExamPaperAnswer e : list.getList()) {
//            User user = userService.selectByIdName(e.getCreateUser(), grade.getUserName());
//            if (user==null){
//                return null;
//            }
//            ExamPaperAnswer examPaperAnswer = examPaperAnswerService.getById(e.getId());
//            Integer[] ids = examPaperSubjectService.getByExamPaperId(examPaperAnswer.getExamPaperId()).stream().map(ExamPaperSubject::getSubjectId).toArray(Integer[]::new);
//            String names = "";
//            if (ids.length > 0) {
//                names = subjectService.selectByIds(ids)
//                        .stream().map(Subject::getName).collect(Collectors.joining(","));
//            }
//            Integer userId = examPaperUserService.getByPaperIdAndCreatUser(e.getExamPaperId(), e.getCreateUser());
//            if(userId == null){
//                return null;
//            }
//            e.setUserName(user.getRealName());
//        }
//        List<ExamPaperAnswer> collect = list.getList().stream()
//                .filter(exam -> exam != null)
//                .collect(Collectors.toList());
//        ArrayList<ExamPaperAnswer> list2 = new ArrayList<>();
//        Map<String, Long> collect1 = collect.stream().collect(Collectors.groupingBy(ExamPaperAnswer::getPaperName, Collectors.counting()));
//        collect.forEach(t->t.setCounts(Math.toIntExact(collect1.getOrDefault(t.getPaperName(),0L))));
//        Map<String, List<ExamPaperAnswer>> collect2 = collect.stream().collect(Collectors.groupingBy(ExamPaperAnswer::getUserName));
//        List<ExamPaperAnswer> filteredList1 = new ArrayList<>();
//        Set<String> uniqueUserNames = new HashSet<>();
//        collect2.forEach((key, value) -> {
//            value.forEach(item -> {
//                item.setUserName(key);
//                item.setCounts(value.size());
//            });
//            list2.addAll(value);
//        });
//        for (ExamPaperAnswer item : list2) {
//            if (uniqueUserNames.add(item.getUserName())) {
//                filteredList1.add(item);
//            }
//        }
        PageHelper.startPage(grade.getPageIndex(), grade.getPageSize());
        PageInfo<ExamPaperAnswer> pageInfoPageInfo = new PageInfo<>(filteredList9);
        pageInfoPageInfo.setTotal(info.getTotal());
src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
@@ -38,7 +38,7 @@
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public RestResponse<PageInfo<ExamTemplatesVO>> list(ExamTemplatesVO examTemplatesVO) throws Exception {
        PageInfo<ExamTemplates> pageInfo = examTemplatesService.gets(examTemplatesVO);
        PageInfo<ExamTemplates> pageInfo = examTemplatesService.getByadmins(examTemplatesVO);
        PageInfo<ExamTemplatesVO> info = PageInfoHelper.copyMap(pageInfo, e -> {
            ExamTemplatesVO vo = new ExamTemplatesVO();
            vo.setName(e.getName());
src/main/java/com/mindskip/xzs/controller/student/ExamPaperAnswerController.java
@@ -6,10 +6,7 @@
import com.mindskip.xzs.domain.enums.ExamPaperAnswerStatusEnum;
import com.mindskip.xzs.event.CalculateExamPaperAnswerCompleteEvent;
import com.mindskip.xzs.event.UserEvent;
import com.mindskip.xzs.service.ExamPaperAnswerService;
import com.mindskip.xzs.service.ExamPaperService;
import com.mindskip.xzs.service.ExamPaperSubjectService;
import com.mindskip.xzs.service.SubjectService;
import com.mindskip.xzs.service.*;
import com.mindskip.xzs.utility.DateTimeUtil;
import com.mindskip.xzs.utility.ExamUtil;
import com.mindskip.xzs.utility.PageInfoHelper;
@@ -36,14 +33,16 @@
    private final SubjectService subjectService;
    private final ApplicationEventPublisher eventPublisher;
    private final ExamPaperSubjectService examPaperSubjectService;
    private final ExamTemplatesUserCountService examTemplatesUserCountService;
    @Autowired
    public ExamPaperAnswerController(ExamPaperAnswerService examPaperAnswerService, ExamPaperService examPaperService, SubjectService subjectService, ApplicationEventPublisher eventPublisher, ExamPaperSubjectService examPaperSubjectService) {
    public ExamPaperAnswerController(ExamPaperAnswerService examPaperAnswerService, ExamPaperService examPaperService, SubjectService subjectService, ApplicationEventPublisher eventPublisher, ExamPaperSubjectService examPaperSubjectService, ExamTemplatesUserCountService examTemplatesUserCountService) {
        this.examPaperAnswerService = examPaperAnswerService;
        this.examPaperService = examPaperService;
        this.subjectService = subjectService;
        this.eventPublisher = eventPublisher;
        this.examPaperSubjectService = examPaperSubjectService;
        this.examTemplatesUserCountService = examTemplatesUserCountService;
    }
@@ -90,7 +89,14 @@
        userEventLog.setContent(content);
        eventPublisher.publishEvent(new CalculateExamPaperAnswerCompleteEvent(examPaperAnswerInfo));
        eventPublisher.publishEvent(new UserEvent(userEventLog));
        //首页随机试卷操作
        if(examPaperSubmitVM.getTemplatesId() != null){
            ExamTemplatesUserCount examTemplatesUserCount = new ExamTemplatesUserCount();
            examTemplatesUserCount.setUserId(user.getId());
            examTemplatesUserCount.setExamPaperId(examPaperSubmitVM.getId());
            examTemplatesUserCount.setExamTemplatesId(examPaperSubmitVM.getTemplatesId());
            examTemplatesUserCountService.add(examTemplatesUserCount);
        }
        return RestResponse.ok(scoreVm);
    }
src/main/java/com/mindskip/xzs/domain/vo/AnswerResponesVo.java
New file
@@ -0,0 +1,231 @@
package com.mindskip.xzs.domain.vo;
import java.util.Date;
public class AnswerResponesVo {
    private Integer id;
    private Integer examPaperId;
    /**
     * 试卷名称
     */
    private String paperName;
    /**
     * 试卷类型( 1固定试卷 4.时段试卷 6.任务试卷)
     */
    private Integer paperType;
    /**
     * 学科
     */
    private Integer subjectId;
    /**
     * 系统判定得分
     */
    private Integer systemScore;
    /**
     * 最终得分(千分制)
     */
    private Integer userScore;
    /**
     * 试卷总分
     */
    private Integer paperScore;
    /**
     * 做对题目数量
     */
    private Integer questionCorrect;
    /**
     * 题目总数量
     */
    private Integer questionCount;
    /**
     * 做题时间(秒)
     */
    private Integer doTime;
    /**
     * 试卷状态(1待判分 2完成)
     */
    private Integer status;
    /**
     * 学生
     */
    private Integer createUser;
    /**
     * 提交时间
     */
    private Date createTime;
    /**
     * 考试次数
     */
    private Integer counts;
    private Integer taskExamId;
    private String formattedTime;
    private String userName;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getExamPaperId() {
        return examPaperId;
    }
    public void setExamPaperId(Integer examPaperId) {
        this.examPaperId = examPaperId;
    }
    public String getPaperName() {
        return paperName;
    }
    public void setPaperName(String paperName) {
        this.paperName = paperName == null ? null : paperName.trim();
    }
    public Integer getPaperType() {
        return paperType;
    }
    public void setPaperType(Integer paperType) {
        this.paperType = paperType;
    }
    public Integer getSubjectId() {
        return subjectId;
    }
    public void setSubjectId(Integer subjectId) {
        this.subjectId = subjectId;
    }
    public Integer getSystemScore() {
        return systemScore;
    }
    public void setSystemScore(Integer systemScore) {
        this.systemScore = systemScore;
    }
    public Integer getUserScore() {
        return userScore;
    }
    public void setUserScore(Integer userScore) {
        this.userScore = userScore;
    }
    public Integer getPaperScore() {
        return paperScore;
    }
    public void setPaperScore(Integer paperScore) {
        this.paperScore = paperScore;
    }
    public Integer getQuestionCorrect() {
        return questionCorrect;
    }
    public void setQuestionCorrect(Integer questionCorrect) {
        this.questionCorrect = questionCorrect;
    }
    public Integer getQuestionCount() {
        return questionCount;
    }
    public void setQuestionCount(Integer questionCount) {
        this.questionCount = questionCount;
    }
    public Integer getDoTime() {
        return doTime;
    }
    public void setDoTime(Integer doTime) {
        this.doTime = doTime;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getCreateUser() {
        return createUser;
    }
    public void setCreateUser(Integer createUser) {
        this.createUser = createUser;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getTaskExamId() {
        return taskExamId;
    }
    public void setTaskExamId(Integer taskExamId) {
        this.taskExamId = taskExamId;
    }
    public Integer getCounts() {
        return counts;
    }
    public void setCounts(Integer counts) {
        this.counts = counts;
    }
    public String getFormattedTime() {
        return formattedTime;
    }
    public void setFormattedTime(String formattedTime) {
        this.formattedTime = formattedTime == null ? null : formattedTime.trim();
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}
src/main/java/com/mindskip/xzs/repository/ExamTemplatesMapper.java
@@ -31,6 +31,12 @@
     */
    List<ExamTemplates> gets(ExamTemplatesVO templatesVO);
    /**
     *
     * @return
     */
    List<ExamTemplates> getByadmins(ExamTemplatesVO templatesVO);
    ExamTemplates getById(@Param("id") Integer id);
    ExamTemplates getByName(@Param("name") String name);
src/main/java/com/mindskip/xzs/service/ExamTemplatesService.java
@@ -19,6 +19,8 @@
    PageInfo<ExamTemplates> gets(ExamTemplatesVO templatesVO);
    PageInfo<ExamTemplates> getByadmins(ExamTemplatesVO templatesVO);
    ExamPaperEditRequestVM getById(Integer id);
    ExamTemplates getByName(String name);
src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -492,7 +492,7 @@
        Integer judgment = examPaperEditRequestVM.getQuestionTypeVMS().stream().mapToInt(QuestionTypeVM::getTrueFalse).sum();
        if ((singleChoice * 2 + multipleChoice * 2 + judgment * 2) != new Integer(100)) {
        if ((singleChoice * 2 + multipleChoice * 2 + judgment * 2) != new Integer(10)) {
            throw new QuestionException();
        }
src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java
@@ -121,6 +121,12 @@
    }
    @Override
    public PageInfo<ExamTemplates> getByadmins(ExamTemplatesVO templatesVO) {
        return PageHelper.startPage(templatesVO.getPageIndex(), templatesVO.getPageSize(), "id desc").doSelectPageInfo(() ->
                examTemplatesMapper.getByadmins(templatesVO));
    }
    @Override
    public ExamPaperEditRequestVM getById(Integer id) {
        return restore(id);
    }
src/main/java/com/mindskip/xzs/viewmodel/student/exam/ExamPaperSubmitVM.java
@@ -20,6 +20,9 @@
    @Valid
    private List<ExamPaperSubmitItemVM> answerItems;
    //模板id
    private Integer templatesId;
    public Integer getId() {
        return id;
    }
@@ -51,4 +54,12 @@
    public void setAnswerItems(List<ExamPaperSubmitItemVM> answerItems) {
        this.answerItems = answerItems;
    }
    public Integer getTemplatesId() {
        return templatesId;
    }
    public void setTemplatesId(Integer templatesId) {
        this.templatesId = templatesId;
    }
}
src/main/resources/logback-spring.xml
@@ -22,7 +22,7 @@
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyyMMdd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
    </appender>
src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -274,17 +274,25 @@
  <select id="adminPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM">
    SELECT
    <include refid="Base_Column_List"/>
    FROM t_exam_paper_answer
    a.id, a.exam_paper_id, a.paper_name, a.paper_type, a.subject_id, a.system_score, a.user_score,
    a.paper_score, a.question_correct, a.question_count, a.do_time, a.status, a.create_user, a.create_time,
    a.task_exam_id, u.real_name as userName
    FROM t_exam_paper_answer a
    left join t_user u on a.create_user = u.id
    <where>
      <if test="subjectId != null">
        and subject_id = #{subjectId}
        and a.subject_id = #{subjectId}
      </if>
      <if test="paperName != null and paperName != ''">
        and paper_name like concat('%',#{paperName},'%')
        and a.paper_name like concat('%',#{paperName},'%')
      </if>
      <if test="userName != null and userName != ''">
        and u.real_name like concat('%',#{userName},'%')
      </if>
    </where>
  </select>
  <select id="getById" resultMap="BaseResultMap">
    SELECT
    <include refid="Base_Column_List"/>
src/main/resources/mapper/ExamTemplatesMapper.xml
@@ -54,6 +54,28 @@
        </where>
    </select>
    <select id="getByadmins" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.domain.vo.ExamTemplatesVO">
        select
        DISTINCT  e.id
        , e.name, e.paper_type, e.suggest_time, e.title_name, e.ctime, e.status, e.menu_ids,e.start_time,e.end_time
        from t_exam_templates e
        left join t_exam_templates_user u on e.id = u.templates_id
        <where>
            <if test="status != null">
                and e.status = 0
            </if>
            <if test="status == null">
                and e.status is null
            </if>
            <if test="userId != null">
                and u.user_id = #{userId}
            </if>
            <if test="now !=null">
                and #{now} between e.start_time and e.end_time
            </if>
        </where>
    </select>
    <select id="getById" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>