From f3ee8bfce84146993410987a26f65ee6d0eb95f1 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 22 五月 2024 12:02:14 +0800
Subject: [PATCH] 题目绑定部门
---
src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java | 3
src/main/java/com/mindskip/xzs/domain/DeptQuestion.java | 18 +++
src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java | 55 +++++++--
src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionResponseVM.java | 107 -----------------
src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 13 +
src/main/java/com/mindskip/xzs/domain/vo/DeptQuestionVO.java | 20 +++
src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionEditRequestVM.java | 41 ++++--
src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java | 23 +++
src/main/resources/mapper/DeptQuestionMapper.xml | 29 ++++
9 files changed, 175 insertions(+), 134 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
index aca34d0..5313919 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -18,8 +18,10 @@
import com.mindskip.xzs.domain.enums.QuestionTypeEnum;
import com.mindskip.xzs.domain.question.QuestionItemObject;
import com.mindskip.xzs.domain.question.QuestionObject;
+import com.mindskip.xzs.domain.vo.DeptQuestionVO;
import com.mindskip.xzs.excel.*;
import com.mindskip.xzs.repository.DepartmentMapper;
+import com.mindskip.xzs.repository.DeptQuestionMapper;
import com.mindskip.xzs.repository.SubjectMapper;
import com.mindskip.xzs.service.*;
import com.mindskip.xzs.utility.*;
@@ -55,22 +57,20 @@
private final QuestionService questionService;
private final TextContentService textContentService;
-
private final SubjectMapper subjectMapper;
-
private final DepartmentMapper departmentMapper;
-
private final QuestionSubjectService questionSubjectService;
+ private final DeptQuestionMapper deptQuestionMapper;
private static final String SPLIT = "銆�";
- @Autowired
- public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService) {
+ public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService, DeptQuestionMapper deptQuestionMapper) {
this.questionService = questionService;
this.textContentService = textContentService;
this.subjectMapper = subjectMapper;
this.departmentMapper = departmentMapper;
this.questionSubjectService = questionSubjectService;
+ this.deptQuestionMapper = deptQuestionMapper;
}
@RequestMapping(value = "/page", method = RequestMethod.POST)
@@ -90,6 +90,9 @@
e.setSubName(subjectMapper.page(subjectPageRequestVM).get(0).getName());
return e;
}).collect(Collectors.toList()));
+ // 鏌ヨ棰樼洰鎵�灞為儴闂�
+ String deptNames = deptQuestionMapper.deptByQuestionId(q.getId()).stream().map(DeptQuestionVO::getDeptName).collect(Collectors.joining("銆�"));
+ vm.setDeptNames(deptNames);
return vm;
});
return RestResponse.ok(page);
diff --git a/src/main/java/com/mindskip/xzs/domain/DeptQuestion.java b/src/main/java/com/mindskip/xzs/domain/DeptQuestion.java
new file mode 100644
index 0000000..dd8f750
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/DeptQuestion.java
@@ -0,0 +1,18 @@
+package com.mindskip.xzs.domain;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/22 10:37
+ */
+@Data
+public class DeptQuestion {
+
+ private Integer id;
+
+ private Integer questionId;
+
+ private Integer deptId;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/DeptQuestionVO.java b/src/main/java/com/mindskip/xzs/domain/vo/DeptQuestionVO.java
new file mode 100644
index 0000000..9b92359
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/DeptQuestionVO.java
@@ -0,0 +1,20 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/22 11:58
+ */
+@Data
+public class DeptQuestionVO {
+
+ private Integer id;
+
+ private Integer questionId;
+
+ private Integer deptId;
+
+ private String deptName;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java b/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java
new file mode 100644
index 0000000..2bfa515
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java
@@ -0,0 +1,23 @@
+package com.mindskip.xzs.repository;
+
+import com.mindskip.xzs.domain.DeptQuestion;
+import com.mindskip.xzs.domain.vo.DeptQuestionVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/22 10:38
+ */
+@Mapper
+public interface DeptQuestionMapper {
+
+ void add(@Param("deptQuestions") List<DeptQuestion> deptQuestions);
+
+ void remove(@Param("questionId") Integer questionId, @Param("deptIds") List<Integer> deptIds);
+
+ /** 鏌ヨ閮ㄩ棬淇℃伅 */
+ List<DeptQuestionVO> deptByQuestionId(@Param("questionId") Integer questionId);
+}
diff --git a/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
index bdb28c9..3c152c9 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.mindskip.xzs.base.RestResponse;
+import com.mindskip.xzs.domain.DeptQuestion;
import com.mindskip.xzs.domain.QuestionSubject;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.Question;
@@ -10,8 +11,11 @@
import com.mindskip.xzs.domain.enums.QuestionTypeEnum;
import com.mindskip.xzs.domain.question.QuestionItemObject;
import com.mindskip.xzs.domain.question.QuestionObject;
+import com.mindskip.xzs.domain.vo.DeptQuestionVO;
import com.mindskip.xzs.domain.vo.QuestionContentVO;
import com.mindskip.xzs.domain.vo.QuestionVO;
+import com.mindskip.xzs.repository.BaseMapper;
+import com.mindskip.xzs.repository.DeptQuestionMapper;
import com.mindskip.xzs.repository.QuestionMapper;
import com.mindskip.xzs.repository.SubjectMapper;
import com.mindskip.xzs.service.QuestionService;
@@ -30,6 +34,7 @@
import com.mindskip.xzs.viewmodel.student.question.answer.QuestionPageStudentResponseVM;
import com.mindskip.xzs.vo.QuestionExportVO;
import com.mindskip.xzs.vo.QuestionImportVO;
+import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -51,15 +56,16 @@
private final SubjectService subjectService;
private final QuestionSubjectService questionSubjectService;
private final SubjectMapper subjectMapper;
+ private final DeptQuestionMapper deptQuestionMapper;
- @Autowired
- public QuestionServiceImpl(QuestionMapper questionMapper, TextContentService textContentService, SubjectService subjectService, QuestionSubjectService questionSubjectService, SubjectMapper subjectMapper) {
- super(questionMapper);
- this.textContentService = textContentService;
+ public QuestionServiceImpl(BaseMapper<Question> baseMapper, QuestionMapper questionMapper, TextContentService textContentService, SubjectService subjectService, QuestionSubjectService questionSubjectService, SubjectMapper subjectMapper, DeptQuestionMapper deptQuestionMapper) {
+ super(baseMapper);
this.questionMapper = questionMapper;
+ this.textContentService = textContentService;
this.subjectService = subjectService;
this.questionSubjectService = questionSubjectService;
this.subjectMapper = subjectMapper;
+ this.deptQuestionMapper = deptQuestionMapper;
}
@Override
@@ -74,16 +80,15 @@
@Transactional
public Question insertFullQuestion(QuestionEditRequestVM model, Integer userId) {
Date now = new Date();
-// Integer gradeLevel = subjectService.levelBySubjectId(model.getSubjectId());
- //棰樺共銆佽В鏋愩�侀�夐」绛� 鎻掑叆
+ // 棰樺共銆佽В鏋愩�侀�夐」绛� 鎻掑叆
TextContent infoTextContent = new TextContent();
infoTextContent.setCreateTime(now);
setQuestionInfoFromVM(infoTextContent, model);
textContentService.insertByFilter(infoTextContent);
+ // 棰樼洰鎻掑叆
Question question = new Question();
-// question.setSubjectId(model.getSubjectId());
question.setGradeLevel(model.getGradeLevel());
question.setCreateTime(now);
question.setQuestionType(model.getQuestionType());
@@ -96,8 +101,17 @@
question.setDeleted(false);
questionMapper.insertSelective(question);
+ // 棰樼洰鎵�灞為儴闂ㄦ彃鍏�
+ List<DeptQuestion> deptQuestions = model.getDeptIds().stream().map(deptId -> {
+ DeptQuestion deptQuestion = new DeptQuestion();
+ deptQuestion.setQuestionId(question.getId());
+ deptQuestion.setDeptId(deptId);
+ return deptQuestion;
+ }).collect(Collectors.toList());
+ deptQuestionMapper.add(deptQuestions);
+
//鎵归噺娣诲姞
- List<QuestionSubject> list = Arrays.asList(model.getSubjectIds()).stream().map(e->{
+ List<QuestionSubject> list = Arrays.asList(model.getSubjectIds()).stream().map(e -> {
QuestionSubject questionSubject = new QuestionSubject();
questionSubject.setQuestionId(question.getId());
questionSubject.setSubjectId(e);
@@ -111,7 +125,8 @@
@Override
@Transactional
public Question updateFullQuestion(QuestionEditRequestVM model) {
-// Integer gradeLevel = subjectService.levelBySubjectId(model.getSubjectId());
+
+ // 棰樼洰淇敼
Question question = questionMapper.selectByPrimaryKey(model.getId());
question.setSubjectId(model.getSubjectId());
question.setGradeLevel(model.getGradeLevel());
@@ -120,6 +135,16 @@
question.setCorrectFromVM(model.getCorrect(), model.getCorrectArray());
questionMapper.updateByPrimaryKeySelective(question);
+ // 澶勭悊棰樼洰鎵�灞為儴闂�
+ deptQuestionMapper.remove(question.getId(), model.getDeptIds());
+ List<DeptQuestion> deptQuestions = model.getDeptIds().stream().map(deptId -> {
+ DeptQuestion deptQuestion = new DeptQuestion();
+ deptQuestion.setQuestionId(question.getId());
+ deptQuestion.setDeptId(deptId);
+ return deptQuestion;
+ }).collect(Collectors.toList());
+ deptQuestionMapper.add(deptQuestions);
+
//棰樺共銆佽В鏋愩�侀�夐」绛� 鏇存柊
TextContent infoTextContent = textContentService.selectById(question.getInfoTextContentId());
setQuestionInfoFromVM(infoTextContent, model);
@@ -127,7 +152,7 @@
questionSubjectService.removeQuestionId(question.getId());
//鎵归噺娣诲姞
- List<QuestionSubject> list = Arrays.asList(model.getSubjectIds()).stream().map(e->{
+ List<QuestionSubject> list = Arrays.asList(model.getSubjectIds()).stream().map(e -> {
QuestionSubject questionSubject = new QuestionSubject();
questionSubject.setQuestionId(question.getId());
questionSubject.setSubjectId(e);
@@ -141,9 +166,9 @@
@Override
public ExamQuestionVO getQuestionEditRequestVM(Integer questionId) {
- //棰樼洰鏄犲皠
+ // 棰樼洰鏄犲皠
Question question = questionMapper.selectByPrimaryKey(questionId);
- List<QuestionSubject> list = questionSubjectService.getQuestion(questionId).stream().map(e->{
+ List<QuestionSubject> list = questionSubjectService.getQuestion(questionId).stream().map(e -> {
SubjectPageRequestVM subject = new SubjectPageRequestVM();
subject.setId(e.getSubjectId());
e.setSubName(subjectMapper.page(subject).get(0).getName());
@@ -151,6 +176,10 @@
}).collect(Collectors.toList());
ExamQuestionVO questionEditRequestVM = getQuestionEditRequestVM(question);
questionEditRequestVM.setQuestionSubjects(list);
+ // 鏌ヨ棰樼洰鎵�灞為儴闂�
+ List<Integer> deptIds = deptQuestionMapper.deptByQuestionId(questionId)
+ .stream().map(DeptQuestionVO::getDeptId).collect(Collectors.toList());
+ questionEditRequestVM.setDeptIds(deptIds);
return questionEditRequestVM;
}
@@ -241,7 +270,7 @@
question.setDeleted(true);
questionMapper.updateByPrimaryKeySelective(question);
List<Integer> list = questionSubjectService.getQuestion(id)
- .stream().map(e->{
+ .stream().map(e -> {
return e.getId();
}).collect(Collectors.toList());
return questionSubjectService.removes(list.toArray(new Integer[list.size()]));
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
index 9401826..4f1e199 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/ExamQuestionVO.java
@@ -18,6 +18,9 @@
*/
private Integer questionType;
+ /** 鎵�灞為儴闂� */
+ private List<Integer> deptIds;
+
/**
* 璇剧洰
*/
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionEditRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionEditRequestVM.java
index 9ab912f..86e1f68 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionEditRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionEditRequestVM.java
@@ -12,34 +12,43 @@
public class QuestionEditRequestVM {
private Integer id;
-// 1:鍗曢��
+
+ /** 棰樺瀷 */
@NotNull
private Integer questionType;
-// 骞寸骇瀛︾琛�
-// @NotNull
+
+ /** 璇剧洰 */
private Integer subjectId;
- //棰樺共
+
+ /** 棰樺共 */
@NotBlank
private String title;
+
+ /** 閮ㄩ棬ID */
+ private List<Integer> deptIds;
private String sbNames;
private Integer gradeLevel;
- //绛旀
+
+ /** 绛旀 */
@Valid
private List<QuestionEditItemVM> items;
- //瑙f瀽
-// @NotBlank
+
+ /** 瑙f瀽 */
private String analyze;
- //澶氶」閫夋嫨棰樼瓟妗�
+ /** 澶氶�夐绛旀 */
private List<String> correctArray;
- //绛旀
+
+ /** 绛旀 */
private String correct;
- //鍒嗘暟
+
+ /** 棰樼洰鍒嗘暟 */
@NotBlank
private String score;
- //闅惧害
+
+ /** 棰樼洰闅惧害 */
@Range(min = 1, max = 5, message = "璇烽�夋嫨棰樼洰闅惧害")
private Integer difficult;
@@ -55,6 +64,14 @@
private String c;
private String d;
+ public List<Integer> getDeptIds() {
+ return deptIds;
+ }
+
+ public void setDeptIds(List<Integer> deptIds) {
+ this.deptIds = deptIds;
+ }
+
public String getDepartment() {
return department;
}
@@ -62,8 +79,6 @@
public void setDepartment(String department) {
this.department = department;
}
-
-
public List<QuestionSubject> getQuestionSubjects() {
return questionSubjects;
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionResponseVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionResponseVM.java
index a0f7413..4a51153 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionResponseVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/question/QuestionResponseVM.java
@@ -2,10 +2,11 @@
import com.mindskip.xzs.domain.QuestionSubject;
import com.mindskip.xzs.viewmodel.BaseVM;
+import lombok.Data;
import java.util.List;
-
+@Data
public class QuestionResponseVM extends BaseVM {
private Integer id;
@@ -34,107 +35,7 @@
private List<QuestionSubject> questionSubjects;
- public Integer getId() {
- return id;
- }
+ /** 鎵�灞為儴闂ㄥ悕瀛� */
+ private String deptNames;
- public void setId(Integer id) {
- this.id = id;
- }
-
- public Integer getQuestionType() {
- return questionType;
- }
-
- public void setQuestionType(Integer questionType) {
- this.questionType = questionType;
- }
-
- public Integer getTextContentId() {
- return textContentId;
- }
-
- public void setTextContentId(Integer textContentId) {
- this.textContentId = textContentId;
- }
-
- public String getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(String createTime) {
- this.createTime = createTime;
- }
-
- public Integer getSubjectId() {
- return subjectId;
- }
-
- public void setSubjectId(Integer subjectId) {
- this.subjectId = subjectId;
- }
-
- public Integer getCreateUser() {
- return createUser;
- }
-
- public void setCreateUser(Integer createUser) {
- this.createUser = createUser;
- }
-
- public String getScore() {
- return score;
- }
-
- public void setScore(String score) {
- this.score = score;
- }
-
- public Integer getStatus() {
- return status;
- }
-
- public void setStatus(Integer status) {
- this.status = status;
- }
-
- public String getCorrect() {
- return correct;
- }
-
- public void setCorrect(String correct) {
- this.correct = correct;
- }
-
- public Integer getAnalyzeTextContentId() {
- return analyzeTextContentId;
- }
-
- public void setAnalyzeTextContentId(Integer analyzeTextContentId) {
- this.analyzeTextContentId = analyzeTextContentId;
- }
-
- public Integer getDifficult() {
- return difficult;
- }
-
- public void setDifficult(Integer difficult) {
- this.difficult = difficult;
- }
-
- public String getShortTitle() {
- return shortTitle;
- }
-
- public void setShortTitle(String shortTitle) {
- this.shortTitle = shortTitle;
- }
-
- public List<QuestionSubject> getQuestionSubjects() {
- return questionSubjects;
- }
-
- public void setQuestionSubjects(List<QuestionSubject> questionSubjects) {
- this.questionSubjects = questionSubjects;
- }
}
diff --git a/src/main/resources/mapper/DeptQuestionMapper.xml b/src/main/resources/mapper/DeptQuestionMapper.xml
new file mode 100644
index 0000000..faf60ee
--- /dev/null
+++ b/src/main/resources/mapper/DeptQuestionMapper.xml
@@ -0,0 +1,29 @@
+<?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.DeptQuestionMapper">
+
+ <insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+ INSERT INTO t_dept_question(question_id, dept_id) VALUES
+ <foreach collection="deptQuestions" item="item" separator=",">
+ (#{item.questionId}, #{item.deptId})
+ </foreach>
+
+ </insert>
+
+ <delete id="remove">
+ DELETE
+ FROM t_dept_question
+ WHERE question_id = #{questionId}
+ AND dept_id IN
+ <foreach collection="deptIds" open="(" separator="," close=")" item="deptId">
+ #{deptId}
+ </foreach>
+ </delete>
+
+ <select id="deptByQuestionId" resultType="com.mindskip.xzs.domain.vo.DeptQuestionVO">
+ SELECT tdq.dept_id, tq.name as deptName FROM t_dept_question tdq INNER JOIN t_department td ON td.id = tdq.dept_id WHERE tdq.question_id = #{questionId}
+ </select>
+
+</mapper>
--
Gitblit v1.8.0