浏览代码

fix:bugfix

caozixuan 1 年之前
父节点
当前提交
72d2a9c55e

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/BasicTeachClazzResult.java

@@ -21,6 +21,9 @@ public class BasicTeachClazzResult {
     @ApiModelProperty(value = "课程编号")
     private String courseCode;
 
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
     @ApiModelProperty(value = "教学班名称")
     private String clazzName;
 
@@ -48,6 +51,14 @@ public class BasicTeachClazzResult {
         this.courseCode = courseCode;
     }
 
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
     public String getClazzName() {
         return clazzName;
     }

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicExamStudentMapper.java

@@ -61,4 +61,11 @@ public interface BasicExamStudentMapper extends BaseMapper<BasicExamStudent> {
             @Param("major") String major, @Param("teachClazz") String teachClazz, @Param("examStudentInfo") String examStudentInfo,
             @Param("dpr") DataPermissionRule dpr);
 
+    /**
+     * 查询被绑定的考生字典
+     *
+     * @param idList 考生字典id集合
+     * @return 被绑定的考生字典
+     */
+    List<String> findBoundBasicExamStudentNames(@Param("idList") List<Long> idList);
 }

+ 5 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTeachClazzMapper.java

@@ -20,9 +20,11 @@ public interface BasicTeachClazzMapper extends BaseMapper<BasicTeachClazz> {
     /**
      * 查询教学课程字典集合
      *
-     * @param examId    考试id
-     * @param clazzName 班级名称
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param clazzName  班级名称
      * @return 教学课程字典集合
      */
-    List<BasicTeachClazzResult> findTeachClazzList(@Param("examId") Long examId, @Param("clazzName") String clazzName);
+    List<BasicTeachClazzResult> findTeachClazzList(@Param("examId") Long examId, @Param("courseCode") String courseCode,
+            @Param("clazzName") String clazzName);
 }

+ 11 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTeachClazzService.java

@@ -31,9 +31,17 @@ public interface BasicTeachClazzService extends IService<BasicTeachClazz> {
     /**
      * 查询所有加血版
      *
-     * @param examId    考试id
-     * @param clazzName 班级名称
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param clazzName  班级名称
      * @return 教学班结果
      */
-    List<BasicTeachClazzResult> findAllTeachClazz(Long examId, String clazzName);
+    List<BasicTeachClazzResult> findAllTeachClazz(Long examId, String courseCode, String clazzName);
+
+    /**
+     * 根据基础班id删除空闲的班级(该班级已经没有学生了)
+     *
+     * @param basicTeachClazzId 基础班级id
+     */
+    void deleteFreeClazz(Long basicTeachClazzId);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ConditionService.java

@@ -28,5 +28,5 @@ public interface ConditionService {
 
     List<SysOrg> listCollege();
 
-    List<BasicTeachClazzResult> listBasicTeachClazz(Long examId, String clazzName);
+    List<BasicTeachClazzResult> listBasicTeachClazz(Long examId, String courseCode, String clazzName);
 }

+ 21 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -30,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -132,7 +131,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
 
     @Transactional
     @Override
-    public void buildImportObjects(Map<String, Object> map) throws IOException, NoSuchFieldException {
+    public void buildImportObjects(Map<String, Object> map) {
 
     }
 
@@ -155,7 +154,17 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
     @Transactional
     @Override
     public void deleteBatch(List<Long> idList) {
-        this.removeByIds(idList);
+        if (CollectionUtils.isNotEmpty(idList)) {
+            List<BasicExamStudent> basicExamStudentList = this.listByIds(idList);
+
+            List<String> boundStudentNameList = this.baseMapper.findBoundBasicExamStudentNames(idList);
+            if (CollectionUtils.isNotEmpty(boundStudentNameList)) {
+                throw ExceptionResultEnum.ERROR.exception(
+                        String.format("学生[%s]已经被绑定", String.join(",", boundStudentNameList)));
+            }
+            this.removeByIds(idList);
+            basicExamStudentList.stream().map(BasicExamStudent::getClazzId).distinct().forEach(e -> basicTeachClazzService.deleteFreeClazz(e));
+        }
     }
 
     /**
@@ -214,13 +223,13 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         }
 
         Long teacherId = null;
-        if (SystemConstant.strNotNull(teacherCode) && !SystemConstant.strNotNull(teacherName)){
+        if (SystemConstant.strNotNull(teacherCode) && !SystemConstant.strNotNull(teacherName)) {
             errorMsgList.add("存在任课老师工号,但缺少任课老师姓名");
         }
-        if (SystemConstant.strNotNull(teacherName) && !SystemConstant.strNotNull(teacherCode)){
+        if (SystemConstant.strNotNull(teacherName) && !SystemConstant.strNotNull(teacherCode)) {
             errorMsgList.add("存在任课老师姓名,但缺少任课老师工号");
         }
-        if (SystemConstant.strNotNull(teacherName) && SystemConstant.strNotNull(teacherCode)){
+        if (SystemConstant.strNotNull(teacherName) && SystemConstant.strNotNull(teacherCode)) {
             // 存在教师信息,根据工号查询,不存在报错(缺少机构信息没法直接创建教师)
             SysUser teacher = sysUserService.getOne(
                     new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId)
@@ -268,14 +277,12 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         basicExamStudent.setStudentCode(studentCode);
         basicExamStudent.setCollege(college);
         basicExamStudent.setMajor(major);
-        if (SystemConstant.strNotNull(paperNumber)) {
-            basicExamStudent.setPaperNumber(paperNumber);
-            basicExamStudent.setTeacherId(teacherId);
-            basicExamStudent.setExamStartTime(examStartTime);
-            basicExamStudent.setExamEndTime(examEndTime);
-            basicExamStudent.setExamPlace(examPlace);
-            basicExamStudent.setExamRoom(examRoom);
-        }
+        basicExamStudent.setPaperNumber(paperNumber);
+        basicExamStudent.setTeacherId(teacherId);
+        basicExamStudent.setExamStartTime(examStartTime);
+        basicExamStudent.setExamEndTime(examEndTime);
+        basicExamStudent.setExamPlace(examPlace);
+        basicExamStudent.setExamRoom(examRoom);
 
         if (SystemConstant.longNotNull(id)) {
             // 编辑 (学号不可更改)

+ 19 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTeachClazzServiceImpl.java

@@ -3,14 +3,17 @@ package com.qmth.distributed.print.business.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.result.BasicTeachClazzResult;
+import com.qmth.distributed.print.business.entity.BasicExamStudent;
 import com.qmth.distributed.print.business.entity.BasicTeachClazz;
 import com.qmth.distributed.print.business.mapper.BasicTeachClazzMapper;
+import com.qmth.distributed.print.business.service.BasicExamStudentService;
 import com.qmth.distributed.print.business.service.BasicTeachClazzService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Objects;
 
@@ -25,6 +28,9 @@ import java.util.Objects;
 @Service
 public class BasicTeachClazzServiceImpl extends ServiceImpl<BasicTeachClazzMapper, BasicTeachClazz> implements BasicTeachClazzService {
 
+    @Resource
+    private BasicExamStudentService basicExamStudentService;
+
     @Transactional
     @Override
     public BasicTeachClazz findOrCreateBasicTeachClazz(SysUser requestUser, Long examId, String courseCode, String teachClazzName) {
@@ -48,8 +54,18 @@ public class BasicTeachClazzServiceImpl extends ServiceImpl<BasicTeachClazzMappe
     }
 
     @Override
-    public List<BasicTeachClazzResult> findAllTeachClazz(Long examId, String clazzName) {
+    public List<BasicTeachClazzResult> findAllTeachClazz(Long examId, String courseCode, String clazzName) {
         clazzName = SystemConstant.translateSpecificSign(clazzName);
-        return this.baseMapper.findTeachClazzList(examId, clazzName);
+        return this.baseMapper.findTeachClazzList(examId, courseCode, clazzName);
+    }
+
+    @Transactional
+    @Override
+    public void deleteFreeClazz(Long basicTeachClazzId) {
+        if (basicExamStudentService.count(
+                new QueryWrapper<BasicExamStudent>().lambda().eq(BasicExamStudent::getClazzId, basicTeachClazzId))
+                == 0) {
+            this.removeById(basicTeachClazzId);
+        }
     }
-}
+}

+ 2 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java

@@ -188,8 +188,7 @@ public class ConditionServiceImpl implements ConditionService {
     }
 
     @Override
-    public List<BasicTeachClazzResult> listBasicTeachClazz(Long examId, String clazzName) {
-        return basicTeachClazzService.findAllTeachClazz(examId, clazzName);
+    public List<BasicTeachClazzResult> listBasicTeachClazz(Long examId, String courseCode, String clazzName) {
+        return basicTeachClazzService.findAllTeachClazz(examId, courseCode, clazzName);
     }
-
 }

+ 16 - 0
distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml

@@ -142,4 +142,20 @@
             </if>
         </where>
     </select>
+    <select id="findBoundBasicExamStudentNames" resultType="java.lang.String">
+        SELECT
+            bes.student_name AS studentName
+        FROM
+            basic_exam_student bes
+                INNER JOIN
+            teach_student ts ON bes.id = ts.student_id
+        <where>
+            <if test="idList != null and idList != '' and idList.size > 0">
+                AND bes.id IN
+                <foreach collection="idList" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

+ 11 - 5
distributed-print-business/src/main/resources/mapper/BasicTeachClazzMapper.xml

@@ -5,18 +5,24 @@
     <select id="findTeachClazzList"
             resultType="com.qmth.distributed.print.business.bean.result.BasicTeachClazzResult">
         SELECT
-            id,
-            exam_id AS examId,
+            btc.id,
+            btc.exam_id AS examId,
+            bc.name AS courseName,
             course_code AS courseCode,
             clazz_name AS clazzName
         FROM
-            basic_teach_clazz
+            basic_teach_clazz btc
+        LEFT JOIN
+            basic_course bc ON btc.school_id = bc.school_id AND btc.course_code = bc.code
         <where>
             <if test="examId != null">
-                AND exam_id = #{examId}
+                AND btc.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                AND btc.course_code = #{courseCode}
             </if>
             <if test="clazzName != null and clazzName != ''">
-                AND clazz_name LIKE CONCAT('%',#{clazzName},'%')
+                AND btc.clazz_name LIKE CONCAT('%',#{clazzName},'%')
             </if>
         </where>
     </select>

+ 3 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/ConditionController.java

@@ -113,7 +113,9 @@ public class ConditionController {
     @RequestMapping(value = "/list_basic_teach_clazz", method = RequestMethod.POST)
     @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = Map.class) })
     public Result listBasicTeachClazz(@ApiParam(value = "考试ID", required = true) @RequestParam(value = "examId") String examId,
+            @ApiParam(value = "课程编号") @RequestParam(value = "courseCode", required = false) String courseCode,
             @ApiParam(value = "名称") @RequestParam(value = "clazzName", required = false) String clazzName) {
-        return ResultUtil.ok(conditionService.listBasicTeachClazz(SystemConstant.convertIdToLong(examId), clazzName));
+        return ResultUtil.ok(
+                conditionService.listBasicTeachClazz(SystemConstant.convertIdToLong(examId), courseCode, clazzName));
     }
 }