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