From b0b59f3d9ee0340268e74e1e7a810e9087372160 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 27 五月 2024 15:19:06 +0800
Subject: [PATCH] 课目关联部门
---
src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectEditRequestVM.java | 39 +--------
src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectResponseVM.java | 36 +-------
src/main/java/com/mindskip/xzs/domain/SubjectDept.java | 19 ++++
src/main/java/com/mindskip/xzs/domain/vo/SubjectDeptVO.java | 22 +++++
src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java | 2
src/main/java/com/mindskip/xzs/controller/admin/EducationController.java | 41 ++++++++--
src/main/java/com/mindskip/xzs/repository/SubjectDeptMapper.java | 22 +++++
src/main/resources/mapper/SubjectDeptMapper.xml | 28 +++++++
src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java | 2
src/main/resources/mapper/DeptQuestionMapper.xml | 6 -
10 files changed, 136 insertions(+), 81 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java b/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java
index d44d44b..a6b772d 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java
@@ -5,36 +5,37 @@
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.ExamPaperSubject;
import com.mindskip.xzs.domain.Subject;
+import com.mindskip.xzs.domain.SubjectDept;
+import com.mindskip.xzs.domain.vo.SubjectDeptVO;
+import com.mindskip.xzs.repository.SubjectDeptMapper;
import com.mindskip.xzs.service.*;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.viewmodel.admin.education.SubjectEditRequestVM;
import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM;
import com.mindskip.xzs.viewmodel.admin.education.SubjectResponseVM;
import com.github.pagehelper.PageInfo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
+import java.util.stream.Collectors;
@RestController("AdminEducationController")
@RequestMapping(value = "/api/admin/education")
+@RequiredArgsConstructor
public class EducationController extends BaseApiController {
private final SubjectService subjectService;
+ private final SubjectDeptMapper subjectDeptMapper;
private final QuestionSubjectService questionSubjectService;
private final ExamPaperSubjectService examPaperSubjectService;
private final ExamPaperDepartmentService examPaperDepartmentService;
private final ExamPaperService examPaperService;
- @Autowired
- public EducationController(SubjectService subjectService, QuestionSubjectService questionSubjectService, ExamPaperSubjectService examPaperSubjectService, ExamPaperDepartmentService examPaperDepartmentService, ExamPaperService examPaperService) {
- this.subjectService = subjectService;
- this.questionSubjectService = questionSubjectService;
- this.examPaperSubjectService = examPaperSubjectService;
- this.examPaperDepartmentService = examPaperDepartmentService;
- this.examPaperService = examPaperService;
- }
@RequestMapping(value = "/subject/list", method = RequestMethod.POST)
public RestResponse<List<Subject>> list() {
@@ -45,10 +46,20 @@
@RequestMapping(value = "/subject/page", method = RequestMethod.POST)
public RestResponse<PageInfo<SubjectResponseVM>> pageList(@RequestBody SubjectPageRequestVM model) {
PageInfo<Subject> pageInfo = subjectService.page(model);
- PageInfo<SubjectResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> modelMapper.map(e, SubjectResponseVM.class));
+ PageInfo<SubjectResponseVM> page = PageInfoHelper.copyMap(pageInfo, item -> {
+ SubjectResponseVM vo = new SubjectResponseVM();
+ BeanUtils.copyProperties(item, vo);
+ List<SubjectDeptVO> subjectDeptVOS = subjectDeptMapper.deptBySubjectId(item.getId());
+ List<Integer> deptIds = subjectDeptVOS.stream().map(SubjectDeptVO::getDeptId).collect(Collectors.toList());
+ String deptNames = subjectDeptVOS.stream().map(SubjectDeptVO::getDeptName).collect(Collectors.joining("銆�"));
+ vo.setDeptIds(deptIds);
+ vo.setDeptNames(deptNames);
+ return vo;
+ });
return RestResponse.ok(page);
}
+ @Transactional(rollbackFor = Exception.class)
@RequestMapping(value = "/subject/edit", method = RequestMethod.POST)
public RestResponse edit(@RequestBody @Valid SubjectEditRequestVM model) {
Subject subject = modelMapper.map(model, Subject.class);
@@ -58,6 +69,15 @@
} else {
subjectService.updateByIdFilter(subject);
}
+ // 澶勭悊閮ㄩ棬
+ subjectDeptMapper.removeBySubjectId(subject.getId());
+ List<SubjectDept> subjectDeptList = model.getDeptIds().stream().map(deptId -> {
+ SubjectDept subjectDept = new SubjectDept();
+ subjectDept.setSubjectId(subject.getId());
+ subjectDept.setDeptId(deptId);
+ return subjectDept;
+ }).collect(Collectors.toList());
+ subjectDeptMapper.add(subjectDeptList);
return RestResponse.ok();
}
@@ -65,6 +85,9 @@
public RestResponse<SubjectEditRequestVM> select(@PathVariable Integer id) {
Subject subject = subjectService.selectById(id);
SubjectEditRequestVM vm = modelMapper.map(subject, SubjectEditRequestVM.class);
+ List<SubjectDeptVO> subjectDeptVOS = subjectDeptMapper.deptBySubjectId(id);
+ List<Integer> deptIds = subjectDeptVOS.stream().map(SubjectDeptVO::getDeptId).collect(Collectors.toList());
+ vm.setDeptIds(deptIds);
return RestResponse.ok(vm);
}
diff --git a/src/main/java/com/mindskip/xzs/domain/SubjectDept.java b/src/main/java/com/mindskip/xzs/domain/SubjectDept.java
new file mode 100644
index 0000000..6e918ed
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/SubjectDept.java
@@ -0,0 +1,19 @@
+package com.mindskip.xzs.domain;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/27 14:28
+ */
+@Data
+public class SubjectDept {
+
+ private Integer id;
+
+ /** 璇剧洰ID */
+ private Integer subjectId;
+
+ private Integer deptId;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/SubjectDeptVO.java b/src/main/java/com/mindskip/xzs/domain/vo/SubjectDeptVO.java
new file mode 100644
index 0000000..d848130
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/SubjectDeptVO.java
@@ -0,0 +1,22 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/27 14:41
+ */
+@Data
+public class SubjectDeptVO {
+
+ private Integer id;
+
+ private Integer deptId;
+
+ private String deptName;
+
+ private Integer subjectId;
+
+ private String subjectName;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java b/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java
index 2bfa515..32dfe3b 100644
--- a/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/DeptQuestionMapper.java
@@ -16,7 +16,7 @@
void add(@Param("deptQuestions") List<DeptQuestion> deptQuestions);
- void remove(@Param("questionId") Integer questionId, @Param("deptIds") List<Integer> deptIds);
+ void remove(@Param("questionId") Integer questionId);
/** 鏌ヨ閮ㄩ棬淇℃伅 */
List<DeptQuestionVO> deptByQuestionId(@Param("questionId") Integer questionId);
diff --git a/src/main/java/com/mindskip/xzs/repository/SubjectDeptMapper.java b/src/main/java/com/mindskip/xzs/repository/SubjectDeptMapper.java
new file mode 100644
index 0000000..66683f2
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/repository/SubjectDeptMapper.java
@@ -0,0 +1,22 @@
+package com.mindskip.xzs.repository;
+
+import com.mindskip.xzs.domain.SubjectDept;
+import com.mindskip.xzs.domain.vo.SubjectDeptVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/5/27 14:29
+ */
+@Mapper
+public interface SubjectDeptMapper {
+
+ void add(@Param("subjectDeptList") List<SubjectDept> subjectDeptList);
+
+ void removeBySubjectId(@Param("subjectId") Integer subjectId);
+
+ List<SubjectDeptVO> deptBySubjectId(@Param("subjectId") Integer subjectId);
+}
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 f6925e4..3e5ce6b 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/QuestionServiceImpl.java
@@ -139,7 +139,7 @@
questionMapper.updateByPrimaryKeySelective(question);
// 澶勭悊棰樼洰鎵�灞為儴闂�
- deptQuestionMapper.remove(question.getId(), model.getDeptIds());
+ deptQuestionMapper.remove(question.getId());
List<DeptQuestion> deptQuestions = model.getDeptIds().stream().map(deptId -> {
DeptQuestion deptQuestion = new DeptQuestion();
deptQuestion.setQuestionId(question.getId());
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectEditRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectEditRequestVM.java
index 7275cef..94796a6 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectEditRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectEditRequestVM.java
@@ -1,12 +1,14 @@
package com.mindskip.xzs.viewmodel.admin.education;
import com.mindskip.xzs.viewmodel.BaseVM;
+import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
+import java.util.List;
-
+@Data
public class SubjectEditRequestVM extends BaseVM {
private Integer id;
@@ -14,41 +16,10 @@
@NotBlank
private String name;
-// @NotNull
+ private List<Integer> deptIds;
+
private Integer level;
-// @NotBlank
private String levelName;
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getLevel() {
- return level;
- }
-
- public void setLevel(Integer level) {
- this.level = level;
- }
-
- public String getLevelName() {
- return levelName;
- }
-
- public void setLevelName(String levelName) {
- this.levelName = levelName;
- }
}
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectResponseVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectResponseVM.java
index 7db650d..08ce9cf 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectResponseVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/education/SubjectResponseVM.java
@@ -1,10 +1,13 @@
package com.mindskip.xzs.viewmodel.admin.education;
import com.mindskip.xzs.viewmodel.BaseVM;
+import lombok.Data;
+import java.util.List;
-
+@Data
public class SubjectResponseVM extends BaseVM {
+
private Integer id;
private String name;
@@ -13,35 +16,8 @@
private String levelName;
- public Integer getId() {
- return id;
- }
+ private List<Integer> deptIds;
- public void setId(Integer id) {
- this.id = id;
- }
+ private String deptNames;
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getLevel() {
- return level;
- }
-
- public void setLevel(Integer level) {
- this.level = level;
- }
-
- public String getLevelName() {
- return levelName;
- }
-
- public void setLevelName(String levelName) {
- this.levelName = levelName;
- }
}
diff --git a/src/main/resources/mapper/DeptQuestionMapper.xml b/src/main/resources/mapper/DeptQuestionMapper.xml
index 9ad9983..188a803 100644
--- a/src/main/resources/mapper/DeptQuestionMapper.xml
+++ b/src/main/resources/mapper/DeptQuestionMapper.xml
@@ -16,12 +16,6 @@
DELETE
FROM t_dept_question
WHERE question_id = #{questionId}
- <if test="deptIds != null and deptIds.size > 0">
- AND dept_id IN
- <foreach collection="deptIds" open="(" separator="," close=")" item="deptId">
- #{deptId}
- </foreach>
- </if>
</delete>
<select id="deptByQuestionId" resultType="com.mindskip.xzs.domain.vo.DeptQuestionVO">
diff --git a/src/main/resources/mapper/SubjectDeptMapper.xml b/src/main/resources/mapper/SubjectDeptMapper.xml
new file mode 100644
index 0000000..4487a63
--- /dev/null
+++ b/src/main/resources/mapper/SubjectDeptMapper.xml
@@ -0,0 +1,28 @@
+<?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.SubjectDeptMapper">
+
+ <insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+ INSERT INTO t_subject_dept(subject_id, dept_id) VALUES
+ <foreach collection="subjectDeptList" item="item" separator=",">
+ (#{item.subjectId}, #{item.deptId})
+ </foreach>
+
+ </insert>
+
+ <delete id="removeBySubjectId">
+ DELETE
+ FROM t_subject_dept
+ WHERE subject_id = #{subjectId}
+ </delete>
+
+ <select id="deptBySubjectId" resultType="com.mindskip.xzs.domain.vo.SubjectDeptVO">
+ SELECT tdq.dept_id, td.name as deptName
+ FROM t_subject_dept tdq
+ INNER JOIN t_department td ON td.id = tdq.dept_id
+ WHERE tdq.subject_id = #{subjectId}
+ </select>
+
+</mapper>
--
Gitblit v1.8.0