From 3ec909b27b3eba956aa9d00cc7a94c179bd04bbf Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 03 七月 2024 18:29:31 +0800
Subject: [PATCH] feat:新增随机时间题目配置

---
 src/main/java/com/mindskip/xzs/repository/ExamTemplatesConfigMapper.java        |   14 +++
 src/main/resources/mapper/ExamTemplatesQuestionMapper.xml                       |    2 
 src/main/java/com/mindskip/xzs/service/ExamTemplatesConfigService.java          |   16 ++++
 src/main/resources/mapper/ExamPaperDepartment.xml                               |    7 +
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java           |    3 
 src/main/resources/mapper/ExamTemplatesConfigMapper.xml                         |   20 +++++
 src/main/java/com/mindskip/xzs/service/QuestionSubjectService.java              |    7 +
 src/main/java/com/mindskip/xzs/service/impl/QuestionSubjectServiceImpl.java     |    5 +
 src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java    |   25 ++++-
 src/main/java/com/mindskip/xzs/domain/ExamTemplatesConfig.java                  |   46 +++++++++++
 src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java       |   33 ++++---
 src/main/resources/mapper/QuestionSubjectMapper.xml                             |   13 +++
 src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java            |    3 
 src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesConfigServiceImpl.java |   25 ++++++
 14 files changed, 194 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
index 026dfc8..df1f7a2 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
@@ -5,12 +5,15 @@
 import com.mindskip.xzs.base.RestResponse;
 import com.mindskip.xzs.context.WebContext;
 import com.mindskip.xzs.domain.ExamTemplates;
+import com.mindskip.xzs.domain.ExamTemplatesConfig;
 import com.mindskip.xzs.domain.ExamTemplatesSubject;
 import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
 import com.mindskip.xzs.repository.ExamTemplatesSubjectMapper;
 import com.mindskip.xzs.service.ExamPaperDepartmentService;
+import com.mindskip.xzs.service.ExamTemplatesConfigService;
 import com.mindskip.xzs.service.ExamTemplatesService;
 import com.mindskip.xzs.utility.PageInfoHelper;
+import com.mindskip.xzs.utility.minio.DateUtils;
 import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
@@ -18,6 +21,7 @@
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @RestController("AdminExamTemplatesController")
@@ -26,6 +30,7 @@
 public class ExamTemplatesController extends BaseApiController {
 
     private final ExamTemplatesService examTemplatesService;
+    private final ExamTemplatesConfigService examTemplatesConfigService;
     private final ExamTemplatesSubjectMapper examTemplatesSubjectMapper;
     private final WebContext webContext;
     private final ExamPaperDepartmentService examPaperDepartmentService;
@@ -70,10 +75,18 @@
         return RestResponse.ok();
     }
 
-//    @RequestMapping(value = "/random", method = RequestMethod.POST)
-//    public RestResponse<Integer> randomExam() throws Exception {
-//        User user = getCurrentUser();
-//        Integer id = examTemplatesService.randomExam(user);
-//        return RestResponse.ok(id);
-//    }
+    @PostMapping("/setConfig")
+    public RestResponse<Boolean> setConfig(@RequestBody ExamTemplatesConfig examTemplatesConfig) {
+        if (Objects.isNull(examTemplatesConfig.getId())) {
+            examTemplatesConfig.setCreateUser(getCurrentUser().getId());
+            examTemplatesConfig.setCreateTime(DateUtils.getNowDate());
+        }
+        return RestResponse.ok(examTemplatesConfigService.saveOrUpdate(examTemplatesConfig));
+    }
+
+    @GetMapping("/getConfig")
+    public RestResponse<ExamTemplatesConfig> getConfig() {
+        return RestResponse.ok(examTemplatesConfigService.getConfig());
+    }
+
 }
diff --git a/src/main/java/com/mindskip/xzs/domain/ExamTemplatesConfig.java b/src/main/java/com/mindskip/xzs/domain/ExamTemplatesConfig.java
new file mode 100644
index 0000000..68716bd
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/ExamTemplatesConfig.java
@@ -0,0 +1,46 @@
+package com.mindskip.xzs.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 闅忔満璇曞嵎閰嶇疆琛�
+ *
+ * @author gonghl
+ */
+@TableName(value = "t_exam_templates_config")
+@Data
+public class ExamTemplatesConfig implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鍗曢�夐
+     */
+    private Integer radioNum;
+
+    /**
+     * 澶氶�夐
+     */
+    private Integer checkNum;
+
+    /**
+     * 鍒ゆ柇棰�
+     */
+    private Integer judgingNum;
+
+    private Integer createUser;
+
+    @OrderBy
+    private Date createTime;
+
+    @TableLogic
+    private Integer deleted;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamTemplatesConfigMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamTemplatesConfigMapper.java
new file mode 100644
index 0000000..6897421
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/repository/ExamTemplatesConfigMapper.java
@@ -0,0 +1,14 @@
+package com.mindskip.xzs.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mindskip.xzs.domain.ExamTemplatesConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author gonghl
+ */
+
+@Mapper
+public interface ExamTemplatesConfigMapper extends BaseMapper<ExamTemplatesConfig> {
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java b/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java
index e7bde69..9813192 100644
--- a/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/QuestionSubjectMapper.java
@@ -51,4 +51,7 @@
 
     /** 鏍规嵁璇剧洰鍜岄鍨嬫煡鎵鹃鐩暟鎹� */
     List<QuestionVO> bySubjectIdAndQuestionType(Integer subjectId, Integer dataBaseValueByValue);
+
+    /** 鏍规嵁绉戠洰鏌ヨ棰樼洰 **/
+    List<QuestionSubject> getSubjectBySubjectIds(Integer[] subjectIds);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/ExamTemplatesConfigService.java b/src/main/java/com/mindskip/xzs/service/ExamTemplatesConfigService.java
new file mode 100644
index 0000000..8119040
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/ExamTemplatesConfigService.java
@@ -0,0 +1,16 @@
+package com.mindskip.xzs.service;
+
+import com.mindskip.xzs.domain.ExamTemplatesConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author gonghl
+ */
+public interface ExamTemplatesConfigService extends IService<ExamTemplatesConfig> {
+
+    /**
+     * 鑾峰彇闅忔満璇曞嵎閰嶇疆
+     * @return 缁撴灉
+     */
+    ExamTemplatesConfig getConfig();
+}
diff --git a/src/main/java/com/mindskip/xzs/service/QuestionSubjectService.java b/src/main/java/com/mindskip/xzs/service/QuestionSubjectService.java
index d7a7343..add441f 100644
--- a/src/main/java/com/mindskip/xzs/service/QuestionSubjectService.java
+++ b/src/main/java/com/mindskip/xzs/service/QuestionSubjectService.java
@@ -43,4 +43,11 @@
     Integer removeSubjectId(Integer subjectId);
 
     List<QuestionSubject> getSubject(Integer id);
+
+    /**
+     * 鏍规嵁绉戠洰鏌ヨ棰樼洰
+     * @param subjectIds 绉戠洰
+     * @return 棰樼洰
+     */
+    List<QuestionSubject> getSubjectBySubjectIds(Integer[] subjectIds);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
index 3417e8c..7049976 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -529,9 +529,10 @@
         Integer order = 0;
         for (QuestionTypeVM questionTypeVM : questionTypeVMList) {
 
-            List<Integer> questions = questionSubjectService.getSubject(questionTypeVM.getSubjectId())
+            List<Integer> questions = questionSubjectService.getSubjectBySubjectIds(examPaperEditRequestVM.getSubjectId())
                     .stream().map(QuestionSubject::getQuestionId).collect(Collectors.toList());
             List<Question> list = questionService.selectByIds(questions);
+            // List<Question> list = questionService.getAll();
 
             Map<Integer, Integer> multiple = new HashMap<>();
             //澶氶��
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesConfigServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesConfigServiceImpl.java
new file mode 100644
index 0000000..164f3f2
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesConfigServiceImpl.java
@@ -0,0 +1,25 @@
+package com.mindskip.xzs.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mindskip.xzs.domain.ExamTemplatesConfig;
+import com.mindskip.xzs.repository.ExamTemplatesConfigMapper;
+import com.mindskip.xzs.service.ExamTemplatesConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author gonghl
+ */
+@Service
+public class ExamTemplatesConfigServiceImpl extends ServiceImpl<ExamTemplatesConfigMapper, ExamTemplatesConfig> implements ExamTemplatesConfigService {
+
+    @Override
+    public ExamTemplatesConfig getConfig() {
+        return baseMapper.selectOne(new QueryWrapper<ExamTemplatesConfig>().last("limit 1"));
+    }
+
+}
+
+
+
+
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java
index c0f8753..8f7bf10 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamTemplatesServiceImpl.java
@@ -5,10 +5,7 @@
 import com.mindskip.xzs.domain.*;
 import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
 import com.mindskip.xzs.repository.*;
-import com.mindskip.xzs.service.DepartmentService;
-import com.mindskip.xzs.service.ExamPaperService;
-import com.mindskip.xzs.service.ExamTemplatesService;
-import com.mindskip.xzs.service.ExamTemplatesUserCountService;
+import com.mindskip.xzs.service.*;
 import com.mindskip.xzs.utility.convert.ExamTemplatesClassConvert;
 import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
 import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVO;
@@ -20,10 +17,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -37,8 +31,9 @@
     private final ExamPaperService examPaperService;
     private final ExamTemplatesUserCountService examTemplatesUserCountService;
     private final ExamTemplatesUserMapper examTemplatesUserMapper;
+    private final ExamTemplatesConfigService examTemplatesConfigService;
 
-    public ExamTemplatesServiceImpl(BaseMapper<ExamTemplates> baseMapper, ExamTemplatesMapper examTemplatesMapper, ExamTemplatesQuestionMapper examTemplatesQuestionMapper, ExamTemplatesSubjectMapper examTemplatesSubjectMapper, DepartmentService departmentService, ExamPaperService examPaperService, ExamTemplatesUserCountService examTemplatesUserCountService, ExamTemplatesUserMapper examTemplatesUserMapper) {
+    public ExamTemplatesServiceImpl(BaseMapper<ExamTemplates> baseMapper, ExamTemplatesMapper examTemplatesMapper, ExamTemplatesQuestionMapper examTemplatesQuestionMapper, ExamTemplatesSubjectMapper examTemplatesSubjectMapper, DepartmentService departmentService, ExamPaperService examPaperService, ExamTemplatesUserCountService examTemplatesUserCountService, ExamTemplatesUserMapper examTemplatesUserMapper, ExamTemplatesConfigService examTemplatesConfigService) {
         super(baseMapper);
         this.examTemplatesMapper = examTemplatesMapper;
         this.examTemplatesQuestionMapper = examTemplatesQuestionMapper;
@@ -47,6 +42,7 @@
         this.examPaperService = examPaperService;
         this.examTemplatesUserCountService = examTemplatesUserCountService;
         this.examTemplatesUserMapper = examTemplatesUserMapper;
+        this.examTemplatesConfigService = examTemplatesConfigService;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -76,12 +72,8 @@
         examTemplates.setCreateUser(model.getCreateUser());
         examTemplatesMapper.add(examTemplates);
 
-        List<ExamTemplatesQuestion> examTemplatesQuestions = ExamTemplatesClassConvert.INSTANCE.QuestionTypeVMListToExamTemplatesQuestionList(model.getQuestionTypeVMS())
-                .stream().map(e -> {
-                    e.setTemplatesId(examTemplates.getId());
-                    return e;
-                }).collect(Collectors.toList());
-        examTemplatesQuestionMapper.saves(examTemplatesQuestions);
+        // 闅忔満鏃堕棿棰樼洰閰嶇疆
+        examTemplatesQuestionMapper.add(getExamTemplatesQuestion(examTemplates.getId()));
 
         List<ExamTemplatesSubject> subjects = new ArrayList<>();
         for (Integer e : model.getSubjectId()) {
@@ -106,6 +98,17 @@
         }
     }
 
+    private ExamTemplatesQuestion getExamTemplatesQuestion(Integer templatesId) {
+        ExamTemplatesConfig examTemplatesConfig = examTemplatesConfigService.getConfig();
+        if (Objects.isNull(examTemplatesConfig)) { throw new RuntimeException("璇峰厛閰嶇疆璇曞嵎妯℃澘"); }
+        ExamTemplatesQuestion examTemplatesQuestion = new ExamTemplatesQuestion();
+        examTemplatesQuestion.setSingleChoice(examTemplatesConfig.getRadioNum().toString());
+        examTemplatesQuestion.setMultipleChoice(examTemplatesConfig.getCheckNum().toString());
+        examTemplatesQuestion.setTrueFalse(examTemplatesConfig.getJudgingNum().toString());
+        examTemplatesQuestion.setTemplatesId(templatesId);
+        return examTemplatesQuestion;
+    }
+
     @Override
     public List<ExamTemplatesVO> list(ExamTemplatesVO examTemplatesVO) {
         return null;
diff --git a/src/main/java/com/mindskip/xzs/service/impl/QuestionSubjectServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/QuestionSubjectServiceImpl.java
index cb36343..b0d5b9d 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/QuestionSubjectServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/QuestionSubjectServiceImpl.java
@@ -55,5 +55,8 @@
         return questionSubjectMapper.getSubject(id);
     }
 
-
+    @Override
+    public List<QuestionSubject> getSubjectBySubjectIds(Integer[] subjectIds) {
+        return questionSubjectMapper.getSubjectBySubjectIds(subjectIds);
+    }
 }
diff --git a/src/main/resources/mapper/ExamPaperDepartment.xml b/src/main/resources/mapper/ExamPaperDepartment.xml
index 58dca25..fdb6e9b 100644
--- a/src/main/resources/mapper/ExamPaperDepartment.xml
+++ b/src/main/resources/mapper/ExamPaperDepartment.xml
@@ -36,7 +36,12 @@
     </select>
 
     <select id="selectByUserId" resultType="java.lang.String">
-        SELECT b.name FROM t_user_department a INNER JOIN t_department b ON a.department_id = b.id WHERE a.user_id = #{userId}
+        SELECT GROUP_CONCAT(b.name)
+        FROM t_user_department a
+        INNER JOIN t_department b ON a.department_id = b.id
+        WHERE a.user_id = #{userId}
+        GROUP BY a.user_id
+        ORDER BY a.user_id
     </select>
 
     <delete id="removeByExamPaperId" parameterType="java.lang.Integer">
diff --git a/src/main/resources/mapper/ExamTemplatesConfigMapper.xml b/src/main/resources/mapper/ExamTemplatesConfigMapper.xml
new file mode 100644
index 0000000..d774996
--- /dev/null
+++ b/src/main/resources/mapper/ExamTemplatesConfigMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mindskip.xzs.repository.ExamTemplatesConfigMapper">
+
+    <resultMap id="BaseResultMap" type="com.mindskip.xzs.domain.ExamTemplatesConfig">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="radioNum" column="radio_num" jdbcType="INTEGER"/>
+            <result property="checkNum" column="check_num" jdbcType="INTEGER"/>
+            <result property="judgingNum" column="Judging_num" jdbcType="INTEGER"/>
+            <result property="createUser" column="create_user" jdbcType="INTEGER"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,radio_num,check_num,
+        Judging_num,create_user,create_time
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/ExamTemplatesQuestionMapper.xml b/src/main/resources/mapper/ExamTemplatesQuestionMapper.xml
index 78454af..9af63bb 100644
--- a/src/main/resources/mapper/ExamTemplatesQuestionMapper.xml
+++ b/src/main/resources/mapper/ExamTemplatesQuestionMapper.xml
@@ -16,7 +16,7 @@
     </sql>
 
     <insert id="add" parameterType="com.mindskip.xzs.domain.ExamTemplatesQuestion" useGeneratedKeys="true" keyProperty="id">
-        insert into t_department (label, multiple_choice, single_choice, true_false, templates_id, subject_id)
+        insert into t_exam_templates_question (label, multiple_choice, single_choice, true_false, templates_id, subject_id)
         values (#{label}, #{multipleChoice}, #{singleChoice}, #{trueFalse}, #{templatesId}, #{subjectId})
     </insert>
 
diff --git a/src/main/resources/mapper/QuestionSubjectMapper.xml b/src/main/resources/mapper/QuestionSubjectMapper.xml
index f46a7f3..e9912cf 100644
--- a/src/main/resources/mapper/QuestionSubjectMapper.xml
+++ b/src/main/resources/mapper/QuestionSubjectMapper.xml
@@ -148,4 +148,17 @@
             tq.id DESC
     </select>
 
+    <select id="getSubjectBySubjectIds" resultType="com.mindskip.xzs.domain.QuestionSubject">
+        select qs.*,s.name as subName
+        from t_question_subject qs
+                 left join t_subject s on qs.subject_id = s.id
+        where qs.deleted = 0 and s.deleted = 0
+        <if test="subjectIds != null and subjectIds.length > 0">
+            and qs.subject_id in
+            <foreach collection="subjectIds" item="subjectId" open="(" separator="," close=")">
+                #{subjectId}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>

--
Gitblit v1.8.0