Parcourir la source

Merge remote-tracking branch 'origin/dev_v3.2.0' into dev_v3.2.0

wangliang il y a 2 ans
Parent
commit
f5589892d3
14 fichiers modifiés avec 364 ajouts et 222 suppressions
  1. 45 21
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationImportDto.java
  2. 9 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamRoomInfo.java
  3. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamStudent.java
  4. 6 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  6. 37 39
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  8. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java
  9. 0 4
      distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml
  10. 79 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicStudentExtrasParam.java
  11. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCampusService.java
  12. 11 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicStudentService.java
  13. 149 133
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java
  14. 0 6
      teachcloud-common/src/main/resources/mapper/BasicStudentMapper.xml

+ 45 - 21
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExaminationImportDto.java

@@ -13,39 +13,35 @@ import java.util.List;
 public class ExaminationImportDto {
 
     @ApiModelProperty(value = "学号")
-    @ExcelDBFieldDesc(name = "学号",length = 30)
+    @ExcelDBFieldDesc(name = "学号", length = 30)
     private String studentCode;
 
     @ApiModelProperty(value = "考号")
-    @ExcelDBFieldDesc(name = "考号",length = 30)
+    @ExcelDBFieldDesc(name = "考号", length = 30)
     private String ticketNumber;
 
     @ApiModelProperty(value = "座位号")
-    @ExcelDBFieldDesc(name = "座位号",length = 30)
+    @ExcelDBFieldDesc(name = "座位号", length = 30)
     private String siteNumber;
 
     @ApiModelProperty(value = "姓名")
-    @ExcelDBFieldDesc(name = "姓名",length = 30)
+    @ExcelDBFieldDesc(name = "姓名", length = 30)
     private String studentName;
 
     @ApiModelProperty(value = "课程代码")
-    @ExcelDBFieldDesc(name = "课程代码",length = 30)
+    @ExcelDBFieldDesc(name = "课程代码", length = 30)
     private String courseCode;
 
     @ApiModelProperty(value = "课程名称")
-    @ExcelDBFieldDesc(name = "课程名称",length = 50)
+    @ExcelDBFieldDesc(name = "课程名称", length = 50)
     private String courseName;
 
-    @ApiModelProperty(value = "校区")
-    @ExcelDBFieldDesc(name = "校区",length = 100)
-    private String campusName;
-
     @ApiModelProperty(value = "考点")
-    @ExcelDBFieldDesc(name = "考点",length = 30)
+    @ExcelDBFieldDesc(name = "考点", length = 30)
     private String examPlace;
 
     @ApiModelProperty(value = "考场")
-    @ExcelDBFieldDesc(name = "考场",length = 30)
+    @ExcelDBFieldDesc(name = "考场", length = 30)
     private String examRoom;
 
     @ApiModelProperty(value = "考试日期")
@@ -57,9 +53,21 @@ public class ExaminationImportDto {
     private String examTime;
 
     @ApiModelProperty(value = "试卷编号")
-    @ExcelDBFieldDesc(name = "试卷编号",length = 30)
+    @ExcelDBFieldDesc(name = "试卷编号", length = 30)
     private String paperNumber;
 
+    @ApiModelProperty(value = "学院")
+    @ExcelDBFieldDesc(name = "学院", length = 30)
+    private String collegeName;
+
+    @ApiModelProperty(value = "专业")
+    @ExcelDBFieldDesc(name = "专业", length = 30)
+    private String majorName;
+
+    @ApiModelProperty(value = "班级")
+    @ExcelDBFieldDesc(name = "班级", length = 30)
+    private String clazzName;
+
     @ApiModelProperty(value = "课程创建的任务序号")
     private String sequence;
 
@@ -132,14 +140,6 @@ public class ExaminationImportDto {
         this.courseName = courseName;
     }
 
-    public String getCampusName() {
-        return campusName;
-    }
-
-    public void setCampusName(String campusName) {
-        this.campusName = campusName;
-    }
-
     public String getExamPlace() {
         return examPlace;
     }
@@ -235,4 +235,28 @@ public class ExaminationImportDto {
     public void setPrintPlanName(String printPlanName) {
         this.printPlanName = printPlanName;
     }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
 }

+ 9 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ExamRoomInfo.java

@@ -11,8 +11,8 @@ public class ExamRoomInfo {
     @ApiModelProperty(value = "卷袋编号")
     private String packageCode;
 
-    @ApiModelProperty(value = "校区名称")
-    private String campusNames;
+//    @ApiModelProperty(value = "校区名称")
+//    private String campusNames;
 
     @ApiModelProperty(value = "使用班级(考场)")
     private String clazzNames;
@@ -31,13 +31,13 @@ public class ExamRoomInfo {
         this.packageCode = packageCode;
     }
 
-    public String getCampusNames() {
-        return campusNames;
-    }
-
-    public void setCampusNames(String campusNames) {
-        this.campusNames = campusNames;
-    }
+//    public String getCampusNames() {
+//        return campusNames;
+//    }
+//
+//    public void setCampusNames(String campusNames) {
+//        this.campusNames = campusNames;
+//    }
 
     public String getClazzNames() {
         return clazzNames;

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamStudent.java

@@ -61,6 +61,12 @@ public class ExamStudent extends BaseEntity implements Serializable {
     @TableField("paper_type")
     private String paperType;
 
+    @TableField("college_name")
+    private String collegeName;
+
+    @TableField("major_name")
+    private String majorName;
+
     @TableField("clazz_id")
     private String clazzId;
 
@@ -246,4 +252,20 @@ public class ExamStudent extends BaseEntity implements Serializable {
     public void setStudentClazzType(StudentClazzEnum studentClazzType) {
         this.studentClazzType = studentClazzType;
     }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
 }

+ 6 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java

@@ -18,15 +18,17 @@ public enum RequiredFieldsEnum {
     COURSE_CODE("courseCode","课程代码"),
     COURSE_NAME("courseName","课程名称"),
     PAPER_NUMBER("paperNumber","试卷编号"),
-    CAMPUS_NAME("campusName","校区"),
     EXAM_PLACE("examPlace","考点"),
     EXAM_ROOM("examRoom","考场"),
     EXAM_DATE("examDate","考试日期"),
-    EXAM_TIME("examTime","考试时间");
+    EXAM_TIME("examTime","考试时间"),
+    COLLEGE_NAME("collegeName","学院"),
+    MAJOR_NAME("majorName","专业"),
+    CLAZZ_NAME("clazzName","班级"),;
 
 
-    private String code;
-    private String desc;
+    private final String code;
+    private final String desc;
 
     public String getCode() {
         return code;

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

@@ -182,7 +182,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @param dataList Excel处理后的数据
      * @param userId   当前用户id
      */
-    void disposeExamStudentByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SysUser sysUser);
+    void disposeExamStudentByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SysUser sysUser) throws IllegalAccessException;
 
     /**
      * 删除考务数据

+ 37 - 39
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -22,9 +22,12 @@ import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
-import com.qmth.teachcloud.common.bean.params.BasicStudentParams;
+import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.*;
+import com.qmth.teachcloud.common.entity.BasicAttachment;
+import com.qmth.teachcloud.common.entity.BasicClazz;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.MqTagEnum;
 import com.qmth.teachcloud.common.enums.PdfTypeEnum;
@@ -128,11 +131,11 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     }
 
     @Override
-    public IPage<PrintTaskDto> listPrintTask(Long semesterId,Long examId, Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId, Integer pageNumber, Integer pageSize) {
+    public IPage<PrintTaskDto> listPrintTask(Long semesterId, Long examId, Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<PrintTaskDto> page = new Page<>(pageNumber, pageSize);
-        return this.baseMapper.listPrintTask(page, schoolId,semesterId,examId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, printHouseId, orgIds);
+        return this.baseMapper.listPrintTask(page, schoolId, semesterId, examId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, printHouseId, orgIds);
     }
 
     @Override
@@ -316,9 +319,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId,Long semesterId,Long examId, List<Long> printPlanIdList, String courseCode, String paperNumber, String examPlace, String examRoom, String studentParams, Long startDate, Long endDate, int pageNumber, int pageSize) {
+    public IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId, Long semesterId, Long examId, List<Long> printPlanIdList, String courseCode, String paperNumber, String examPlace, String examRoom, String studentParams, Long startDate, Long endDate, int pageNumber, int pageSize) {
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
-        return examDetailMapper.findDetailPage(new Page<>(pageNumber, pageSize), schoolId,semesterId,examId, printPlanIdList, courseCode, paperNumber, examPlace, examRoom, SystemConstant.translateSpecificSign(studentParams), startDate, endDate, orgIds);
+        return examDetailMapper.findDetailPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, printPlanIdList, courseCode, paperNumber, examPlace, examRoom, SystemConstant.translateSpecificSign(studentParams), startDate, endDate, orgIds);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -463,9 +466,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Override
     public List<Long> disposeExamDetailByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SerialNumberParams serialNumberParams, SysUser sysUser) {
         List<Map<String, Object>> examDetailKeyList = dataList.stream().flatMap(e -> {
-            String campusName = e.getCampusName();
             Long schoolIdId = e.getSchoolId();
-            Long printHouseId = basicCampusService.getPrintHouseIdBySchoolIdAndCampusName(schoolIdId, campusName);
             Map<String, Object> map = new HashMap<>();
             map.put("schoolId", schoolIdId);
             map.put("printPlanId", e.getPrintPlanId());
@@ -474,17 +475,16 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             map.put("examRoom", e.getExamRoom());
             map.put("examStartTime", e.getExamStartTime());
             map.put("examEndTime", e.getExamEndTime());
-            map.put("printHouseId", printHouseId);
             return Stream.of(map);
         }).distinct().collect(Collectors.toList());
 
-        // 同一任务是否有多个校区
-        Map<String, List<Map<String, Object>>> stringListMap = examDetailKeyList.stream().collect(Collectors.groupingBy(m -> m.get("schoolId") + "#" + m.get("printPlanId") + "#" + m.get("printPlanName") + "#" + m.get("examPlace") + "#" + m.get("examRoom") + "#" + m.get("examStartTime") + "#" + m.get("examEndTime")));
-        for (Map.Entry<String, List<Map<String, Object>>> entry : stringListMap.entrySet()) {
-            if (entry.getValue().size() > 1) {
-                throw ExceptionResultEnum.ERROR.exception("同一考场对应校区指派的印刷室只能为一个");
-            }
-        }
+//        // 同一任务是否有多个校区
+//        Map<String, List<Map<String, Object>>> stringListMap = examDetailKeyList.stream().collect(Collectors.groupingBy(m -> m.get("schoolId") + "#" + m.get("printPlanId") + "#" + m.get("printPlanName") + "#" + m.get("examPlace") + "#" + m.get("examRoom") + "#" + m.get("examStartTime") + "#" + m.get("examEndTime")));
+//        for (Map.Entry<String, List<Map<String, Object>>> entry : stringListMap.entrySet()) {
+//            if (entry.getValue().size() > 1) {
+//                throw ExceptionResultEnum.ERROR.exception("同一考场对应校区指派的印刷室只能为一个");
+//            }
+//        }
 
         List<ExamDetail> examDetailList = new ArrayList<>();
         for (Map<String, Object> map : examDetailKeyList) {
@@ -493,7 +493,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             String examRoom = String.valueOf(map.get("examRoom"));
             String examStartTime = String.valueOf(map.get("examStartTime"));
             String examEndTime = String.valueOf(map.get("examEndTime"));
-            Long printHouseId = Long.valueOf(String.valueOf(map.get("printHouseId")));
+//            Long printHouseId = Long.valueOf(String.valueOf(map.get("printHouseId")));
 
             long totalSubjects = dataList.stream()
                     .filter(e -> e.getExamPlace().equals(examPlace) &&
@@ -516,7 +516,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examDetail.setExamEndTime(SystemConstant.convertIdToLong(examEndTime));
             examDetail.setExamDataSource(ExamDataSourceEnum.FILE_IMPORT);
             examDetail.setNormal(true);
-            examDetail.setPrintHouseId(printHouseId);
+//            examDetail.setPrintHouseId(printHouseId);
             examDetail.setCreateId(userId);
             examDetail.setUpdateId(userId);
             examDetailList.add(examDetail);
@@ -598,9 +598,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void disposeExamStudentByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SysUser sysUser) {
+    public void disposeExamStudentByExaminationExcel(List<ExaminationImportDto> dataList, Long userId, SysUser sysUser) throws IllegalAccessException {
         List<ExamStudent> examStudentList = new ArrayList<>();
-        List<BasicStudentParams> basicStudentParamsList = new ArrayList<>();
+        List<BasicStudentExtrasParam> basicStudentExtrasParamList = new ArrayList<>();
         for (ExaminationImportDto examinationImportDto : dataList) {
             Long schoolId = examinationImportDto.getSchoolId();
             Long printPlanId = examinationImportDto.getPrintPlanId();
@@ -615,7 +615,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             String studentCode = examinationImportDto.getStudentCode();
             String ticketNumber = examinationImportDto.getTicketNumber();
             String siteNumber = examinationImportDto.getSiteNumber();
-            String campusName = examinationImportDto.getCampusName();
+            String collegeName = examinationImportDto.getCollegeName();
+            String majorName = examinationImportDto.getMajorName();
+            String clazzName = examinationImportDto.getClazzName();
 
             List<FieldsDto> fieldsDtoList = examinationImportDto.getSecondaryFieldList();
             List<ExtendFieldsDto> extendFieldsDtoList = this.getExtendFieldsByFields(fieldsDtoList);
@@ -649,30 +651,26 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examStudent.setTicketNumber(ticketNumber);
             examStudent.setExtendFields(JSON.toJSONString(extendFieldsDtoList));
             examStudent.setSiteNumber(siteNumber);
+            examStudent.setCollegeName(collegeName);
+            examStudent.setMajorName(majorName);
+            examStudent.setClazzName(clazzName);
             examStudent.setCreateId(userId);
             examStudent.setUpdateId(userId);
             examStudentList.add(examStudent);
 
 
-            BasicStudentParams basicStudentParams = new BasicStudentParams();
-            BasicStudent tmp = basicStudentService.getOne(new QueryWrapper<BasicStudent>().lambda()
-                    .eq(BasicStudent::getSchoolId, sysUser.getSchoolId())
-                    .eq(BasicStudent::getEnable, true)
-                    .eq(BasicStudent::getStudentCode, studentCode));
-            if (Objects.nonNull(tmp)) {
-                basicStudentParams.setId(tmp.getId());
-                basicStudentParams.setCollegeId(tmp.getBelongOrgId());
-                basicStudentParams.setMajorId(tmp.getMajorId());
-                basicStudentParams.setClazzId(tmp.getClazzId());
-                basicStudentParams.setPhoneNumber(tmp.getPhoneNumber());
-            }
-            basicStudentParams.setStudentCode(studentCode);
-            basicStudentParams.setStudentName(studentName);
-            basicStudentParamsList.add(basicStudentParams);
+            BasicStudentExtrasParam basicStudentExtrasParam = new BasicStudentExtrasParam();
+
+            basicStudentExtrasParam.setStudentName(studentName);
+            basicStudentExtrasParam.setStudentCode(studentCode);
+            basicStudentExtrasParam.setCollegeName(collegeName);
+            basicStudentExtrasParam.setMajorName(majorName);
+            basicStudentExtrasParam.setClazzName(clazzName);
+            basicStudentExtrasParamList.add(basicStudentExtrasParam);
         }
         examStudentService.saveBatch(examStudentList);
-        // 更新基础学生表数据
-        basicStudentService.saveOrUpdateBasicStudentBatch(basicStudentParamsList, sysUser);
+        // 更新基础学生表和附加数据
+        basicStudentService.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, sysUser);
     }
 
     @Override
@@ -736,7 +734,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         Long userId = tbTask.getCreateId();
         Long schoolId = tbTask.getSchoolId();
 
-        List<ExaminationResult> examinationResultList = this.findExaminationBriefPage(schoolId,semesterId,examId,
+        List<ExaminationResult> examinationResultList = this.findExaminationBriefPage(schoolId, semesterId, examId,
                 printPlanIdList, courseCode, paperNumber, examPlace, examRoom, packageCode, startDate, endDate,
                 SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE, orgIds).getRecords();
         int index = 0;

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

@@ -2099,7 +2099,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examRoomInfo.setPackageCode(packageCode);
                 if (!CollectionUtils.isEmpty(clazzIds)) {
                     classNames = examDetailService.findClazzNamesByClazzIds(clazzIds, separator);
-                    examRoomInfo.setCampusNames(basicCampusService.findCampusNamesByClazzIdList(clazzIds, ","));
+//                    examRoomInfo.setCampusNames(basicCampusService.findCampusNamesByClazzIdList(clazzIds, ","));
                 }
                 examRoomInfo.setClazzNames(classNames);
                 examRoomInfo.setStudentCount(studentCount);

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -194,9 +194,9 @@ public class CreatePdfUtil {
         }
         List<Long> classIds = new ArrayList<>(clazzIdSet);
 
-        String campusName = CollectionUtils.isEmpty(classIds) ? "" : basicCampusService.findCampusNamesByClazzIdList(classIds, ",");
+//        String campusName = CollectionUtils.isEmpty(classIds) ? "" : basicCampusService.findCampusNamesByClazzIdList(classIds, ",");
         htmlMap.put("schoolName", schoolName);
-        htmlMap.put("campusName", campusName);
+//        htmlMap.put("campusName", campusName);
         htmlMap.put("examSite", examDetail.getExamPlace());
         htmlMap.put("examRoom", examDetail.getExamRoom());
         htmlMap.put("startTime", DateUtil.format(new Date(examDetail.getExamStartTime()), SystemConstant.DEFAULT_DATE_PATTERN));

+ 0 - 4
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -142,11 +142,9 @@
         bs.student_name AS studentName,
         bs.clazz_id AS clazzId,
         bc.clazz_name AS clazzName,
-        bca.campus_name campusName
         FROM
         basic_student bs
         INNER JOIN basic_clazz bc ON bs.clazz_id = bc.id
-        LEFT JOIN basic_campus bca ON bs.campus_id = bca.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 AND bs.school_id = #{schoolId}
@@ -162,12 +160,10 @@
         bs.student_name AS studentName,
         ts.teach_clazz_id AS clazzId,
         tc.teach_clazz_name AS clazzName,
-        bca.campus_name campusName
         FROM
         teach_student ts
         join basic_student bs on ts.student_id = bs.id
         INNER JOIN teach_clazz tc ON ts.teach_clazz_id = tc.id
-        LEFT JOIN basic_campus bca ON bs.campus_id = bca.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 AND ts.school_id = #{schoolId}

+ 79 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicStudentExtrasParam.java

@@ -0,0 +1,79 @@
+package com.qmth.teachcloud.common.bean.params;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 学生和附加信息
+ * @Author: CaoZixuan
+ * @Date: 2022-08-25
+ */
+public class BasicStudentExtrasParam implements Serializable {
+
+    @ApiModelProperty(value = "姓名")
+    private String studentName;
+
+    @ApiModelProperty(value = "学号")
+    private String studentCode;
+
+    @ApiModelProperty(value = "手机号")
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "学院")
+    private String collegeName;
+
+    @ApiModelProperty(value = "专业")
+    private String majorName;
+
+    @ApiModelProperty(value = "班级")
+    private String clazzName;
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+}

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCampusService.java

@@ -37,6 +37,7 @@ public interface BasicCampusService extends IService<BasicCampus> {
      */
     Boolean removeBasicCampusById(Long id);
 
+    @Deprecated
     Long getPrintHouseIdBySchoolIdAndCampusName(Long schoolId, String campusName);
 
     /**
@@ -45,5 +46,6 @@ public interface BasicCampusService extends IService<BasicCampus> {
      * @param separator 校区连接符
      * @return 连接符连好的校区
      */
+    @Deprecated
     String findCampusNamesByClazzIdList(List<Long> clazzIdList, String separator);
 }

+ 11 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicStudentService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.TaskPrintClassDto;
+import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.bean.params.BasicStudentParams;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.entity.BasicStudent;
@@ -66,7 +67,7 @@ public interface BasicStudentService extends IService<BasicStudent> {
      *
      * @param basicStudentParams 基础学生信息参数
      * @param requestUser        新增或编辑的校区id
-     * @return
+     * @return id
      */
     Long saveBasicStudent(BasicStudentParams basicStudentParams, SysUser requestUser);
 
@@ -78,6 +79,14 @@ public interface BasicStudentService extends IService<BasicStudent> {
      */
     void saveOrUpdateBasicStudentBatch(List<BasicStudentParams> basicStudentParamsList, SysUser requestUser);
 
+    /**
+     * 保存 - 基础学生信息和学生附加信息(院、专、班)
+     *
+     * @param basicStudentExtrasParamList 参数集合
+     * @param requestUser                 请求人
+     */
+    void saveBasicStudentWithExtrasList(List<BasicStudentExtrasParam> basicStudentExtrasParamList, SysUser requestUser) throws IllegalAccessException;
+
     /**
      * 批量删除学生基本信息(逻辑)
      *
@@ -105,4 +114,4 @@ public interface BasicStudentService extends IService<BasicStudent> {
      * @return 结果
      */
     Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws IllegalAccessException;
-}
+}

+ 149 - 133
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

@@ -9,17 +9,17 @@ import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.bean.dto.TaskPrintClassDto;
 import com.qmth.teachcloud.common.bean.dto.excel.BasicStudentImportDto;
 import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
-import com.qmth.teachcloud.common.bean.params.BasicClazzParams;
-import com.qmth.teachcloud.common.bean.params.BasicCollegeParams;
-import com.qmth.teachcloud.common.bean.params.BasicMajorParams;
-import com.qmth.teachcloud.common.bean.params.BasicStudentParams;
+import com.qmth.teachcloud.common.bean.params.*;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.TeachBasicEnum;
 import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
-import com.qmth.teachcloud.common.service.*;
+import com.qmth.teachcloud.common.service.BasicClazzService;
+import com.qmth.teachcloud.common.service.BasicCollegeService;
+import com.qmth.teachcloud.common.service.BasicMajorService;
+import com.qmth.teachcloud.common.service.BasicStudentService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -29,6 +29,7 @@ import org.springframework.util.LinkedMultiValueMap;
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -75,7 +76,9 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     public IPage<BasicStudent> listPage(Page<BasicStudent> page, String classId) {
         List<String> classIds = Arrays.asList(classId.split(","));
         QueryWrapper<BasicStudent> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().in(BasicStudent::getClazzId, classIds).orderByAsc(BasicStudent::getClazzId, BasicStudent::getStudentCode);
+        queryWrapper.lambda().in(BasicStudent::getClazzId, classIds)
+                .orderByAsc(BasicStudent::getClazzId)
+                .orderByAsc(BasicStudent::getStudentCode);
         return this.baseMapper.selectPage(page, queryWrapper);
     }
 
@@ -102,6 +105,134 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         this.saveOrUpdateBatch(this.editEntityHelp(basicStudentParamsList, requestUser));
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void saveBasicStudentWithExtrasList(List<BasicStudentExtrasParam> basicStudentExtrasParamList, SysUser requestUser) throws IllegalAccessException {
+        Long schoolId = requestUser.getSchoolId();
+        final String link = "-";
+        // key = collegeName
+        Map<String, Long> collegeMap = new HashMap<>();
+        // key = schoolId + "-" + majorName
+        Map<String, Long> majorMap = new HashMap<>();
+        // key = schoolId + "-" + clazzName
+        Map<String, Long> clazzMap = new HashMap<>();
+
+        List<BasicStudentParams> addBasicStudentParamsList = new ArrayList<>();
+        for (BasicStudentExtrasParam basicStudentExtrasParam : basicStudentExtrasParamList) {
+            // 取值
+            String studentName = basicStudentExtrasParam.getStudentName();
+            String studentCode = basicStudentExtrasParam.getStudentCode();
+            String phoneNumber = basicStudentExtrasParam.getPhoneNumber();
+            String collegeName = basicStudentExtrasParam.getCollegeName();
+            String majorName = basicStudentExtrasParam.getMajorName();
+            String clazzName = basicStudentExtrasParam.getClazzName();
+
+            // 学院
+            Long collegeId = null;
+            if (SystemConstant.strNotNull(collegeName)) {
+                BasicCollege basicCollege;
+                if (collegeMap.containsKey(collegeName)) {
+                    collegeId = collegeMap.get(collegeName);
+                } else {
+                    basicCollege = basicCollegeService.getOne(new QueryWrapper<BasicCollege>().lambda()
+                            .eq(BasicCollege::getSchoolId, schoolId)
+                            .eq(BasicCollege::getCollegeName, collegeName));
+                    if (Objects.isNull(basicCollege)) {
+                        // 新增一个basicCollege
+                        BasicCollegeParams basicCollegeParams = new BasicCollegeParams();
+                        basicCollegeParams.setCollegeName(collegeName);
+                        collegeId = basicCollegeService.saveBasicCollege(basicCollegeParams, requestUser);
+                    } else {
+                        collegeId = basicCollege.getId();
+                    }
+                    collegeMap.put(collegeName, collegeId);
+                }
+            }
+
+            // 专业
+            Long majorId = null;
+            if (SystemConstant.strNotNull(majorName)) {
+                if (!SystemConstant.longNotNull(collegeId)) {
+                    throw ExceptionResultEnum.ERROR.exception("学生专业信息缺失学院信息异常");
+                }
+                String majorKey = schoolId + link + majorName;
+                if (majorMap.containsKey(majorKey)) {
+                    majorId = majorMap.get(majorKey);
+                } else {
+                    BasicMajor basicMajor = basicMajorService.getOne(new QueryWrapper<BasicMajor>().lambda()
+                            .eq(BasicMajor::getSchoolId, schoolId)
+                            .eq(BasicMajor::getName, majorName));
+                    if (Objects.isNull(basicMajor)) {
+                        // 新增一个major
+                        BasicMajorParams basicMajorParams = new BasicMajorParams();
+                        basicMajorParams.setMajorName(majorName);
+                        basicMajorParams.setCollegeId(collegeId);
+                        majorId = basicMajorService.saveBasicMajor(basicMajorParams, requestUser);
+                    } else {
+                        majorId = basicMajor.getId();
+                    }
+                    majorMap.put(majorKey, majorId);
+                }
+            }
+
+            // 班级
+            Long clazzId = null;
+            if (SystemConstant.strNotNull(clazzName)) {
+                if (!SystemConstant.longNotNull(collegeId)) {
+                    throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失学院信息异常");
+                }
+                if (!SystemConstant.longNotNull(majorId)) {
+                    throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失专业信息异常");
+                }
+
+                String clazzKey = schoolId + link + clazzName;
+                if (clazzMap.containsKey(clazzKey)) {
+                    clazzId = clazzMap.get(clazzKey);
+                } else {
+                    // 2022-03-30 字典班级在全校唯一
+                    BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
+                            .eq(BasicClazz::getSchoolId, schoolId)
+                            .eq(BasicClazz::getClazzName, clazzName));
+                    if (Objects.isNull(basicClazz)) {
+                        // 新增一个clazz
+                        BasicClazzParams basicClazzParams = new BasicClazzParams();
+                        basicClazzParams.setMajorId(majorId);
+                        basicClazzParams.setClazzName(clazzName);
+                        clazzId = basicClazzService.saveBasicClazz(basicClazzParams, requestUser);
+                    } else {
+                        clazzId = basicClazz.getId();
+                    }
+                    clazzMap.put(clazzKey, clazzId);
+                }
+            }
+            // 学生信息组装
+            BasicStudentParams basicStudentParams = new BasicStudentParams();
+            basicStudentParams.setStudentName(studentName);
+            basicStudentParams.setStudentCode(studentCode);
+            basicStudentParams.setPhoneNumber(phoneNumber);
+            if (SystemConstant.longNotNull(collegeId)) {
+                basicStudentParams.setCollegeId(collegeId);
+            }
+            if (SystemConstant.longNotNull(majorId)) {
+                basicStudentParams.setMajorId(majorId);
+            }
+            if (SystemConstant.longNotNull(clazzId)) {
+                basicStudentParams.setClazzId(clazzId);
+            }
+
+            BasicStudent tmp = this.getOne(new QueryWrapper<BasicStudent>().lambda()
+                    .eq(BasicStudent::getSchoolId, requestUser.getSchoolId())
+                    .eq(BasicStudent::getEnable, true)
+                    .eq(BasicStudent::getStudentCode, studentCode));
+            if (Objects.nonNull(tmp)) {
+                basicStudentParams.setId(tmp.getId());
+            }
+            addBasicStudentParamsList.add(basicStudentParams);
+        }
+        List<BasicStudent> basicStudentList = this.editEntityHelp(addBasicStudentParamsList, requestUser);
+        this.saveOrUpdateBatch(basicStudentList);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean removeBasicStudentBatch(List<Long> idList) {
@@ -148,16 +279,6 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     @Override
     public Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws IllegalAccessException {
         SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
-        Long schoolId = sysUser.getSchoolId();
-        final String link = "-";
-        // key = collegeName
-        Map<String, Long> collegeMap = new HashMap<>();
-        // key = schoolId + "-" + majorName
-        Map<String, Long> majorMap = new HashMap<>();
-        // key = schoolId + "-" + clazzName
-        Map<String, Long> clazzMap = new HashMap<>();
-
-        List<BasicStudentParams> addBasicStudentParamsList = new ArrayList<>();
         for (int i = 0; i < finalList.size(); i++) {
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             List<Object> basicStudentImportDtoList = excelMap.get(i);
@@ -171,124 +292,19 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
                 BeanUtils.copyProperties(e, basicStudentImportDto);
                 return basicStudentImportDto;
             }).collect(Collectors.toList());
-            map.put("dataCount", datasource.size());
-
-            for (int y = 0; y < Objects.requireNonNull(basicStudentImportDtoList).size(); y++) {
-                BasicStudentImportDto basicStudentImportDto = (BasicStudentImportDto) basicStudentImportDtoList.get(y);
-
-                // 取值
-                String studentName = basicStudentImportDto.getStudentName();
-                String studentCode = basicStudentImportDto.getStudentCode();
-                String phoneNumber = basicStudentImportDto.getPhoneNumber();
-                String collegeName = basicStudentImportDto.getCollegeName();
-                String majorName = basicStudentImportDto.getMajorName();
-                String clazzName = basicStudentImportDto.getClazzName();
-
-                // 学院
-                Long collegeId = null;
-                if (SystemConstant.strNotNull(collegeName)) {
-                    BasicCollege basicCollege;
-                    if (collegeMap.containsKey(collegeName)) {
-                        collegeId = collegeMap.get(collegeName);
-                    } else {
-                        basicCollege = basicCollegeService.getOne(new QueryWrapper<BasicCollege>().lambda()
-                                .eq(BasicCollege::getSchoolId, schoolId)
-                                .eq(BasicCollege::getCollegeName, collegeName));
-                        if (Objects.isNull(basicCollege)) {
-                            // 新增一个basicCollege
-                            BasicCollegeParams basicCollegeParams = new BasicCollegeParams();
-                            basicCollegeParams.setCollegeName(collegeName);
-                            collegeId = basicCollegeService.saveBasicCollege(basicCollegeParams, sysUser);
-                        } else {
-                            collegeId = basicCollege.getId();
-                        }
-                        collegeMap.put(collegeName, collegeId);
-                    }
-                }
-
-                // 专业
-                Long majorId = null;
-                if (SystemConstant.strNotNull(majorName)) {
-                    if (!SystemConstant.longNotNull(collegeId)) {
-                        throw ExceptionResultEnum.ERROR.exception("学生专业信息缺失学院信息异常");
-                    }
-                    String majorKey = schoolId + link + majorName;
-                    if (majorMap.containsKey(majorKey)) {
-                        majorId = majorMap.get(majorKey);
-                    } else {
-                        BasicMajor basicMajor = basicMajorService.getOne(new QueryWrapper<BasicMajor>().lambda()
-                                .eq(BasicMajor::getSchoolId, schoolId)
-                                .eq(BasicMajor::getName, majorName));
-                        if (Objects.isNull(basicMajor)) {
-                            // 新增一个major
-                            BasicMajorParams basicMajorParams = new BasicMajorParams();
-                            basicMajorParams.setMajorName(majorName);
-                            basicMajorParams.setCollegeId(collegeId);
-                            majorId = basicMajorService.saveBasicMajor(basicMajorParams, sysUser);
-                        } else {
-                            majorId = basicMajor.getId();
-                        }
-                        majorMap.put(majorKey, majorId);
-                    }
-                }
-
-                // 班级
-                Long clazzId = null;
-                if (SystemConstant.strNotNull(clazzName)) {
-                    if (!SystemConstant.longNotNull(collegeId)) {
-                        throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失学院信息异常");
-                    }
-                    if (!SystemConstant.longNotNull(majorId)) {
-                        throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失专业信息异常");
-                    }
 
-                    String clazzKey = schoolId + link + clazzName;
-                    if (clazzMap.containsKey(clazzKey)) {
-                        clazzId = clazzMap.get(clazzKey);
-                    } else {
-                        // 2022-03-30 字典班级在全校唯一
-                        BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
-                                .eq(BasicClazz::getSchoolId, schoolId)
-                                .eq(BasicClazz::getClazzName, clazzName));
-                        if (Objects.isNull(basicClazz)) {
-                            // 新增一个clazz
-                            BasicClazzParams basicClazzParams = new BasicClazzParams();
-                            basicClazzParams.setMajorId(majorId);
-                            basicClazzParams.setClazzName(clazzName);
-                            clazzId = basicClazzService.saveBasicClazz(basicClazzParams, sysUser);
-                        } else {
-                            clazzId = basicClazz.getId();
-                        }
-                        clazzMap.put(clazzKey, clazzId);
-                    }
-                }
-                // 学生信息组装
-                BasicStudentParams basicStudentParams = new BasicStudentParams();
-                basicStudentParams.setStudentName(studentName);
-                basicStudentParams.setStudentCode(studentCode);
-                basicStudentParams.setPhoneNumber(phoneNumber);
-                if (SystemConstant.longNotNull(collegeId)) {
-                    basicStudentParams.setCollegeId(collegeId);
-                }
-                if (SystemConstant.longNotNull(majorId)) {
-                    basicStudentParams.setMajorId(majorId);
-                }
-                if (SystemConstant.longNotNull(clazzId)) {
-                    basicStudentParams.setClazzId(clazzId);
-                }
-
-                BasicStudent tmp = this.getOne(new QueryWrapper<BasicStudent>().lambda()
-                        .eq(BasicStudent::getSchoolId, sysUser.getSchoolId())
-                        .eq(BasicStudent::getEnable, true)
-                        .eq(BasicStudent::getStudentCode, studentCode));
-                if (Objects.nonNull(tmp)) {
-                    basicStudentParams.setId(tmp.getId());
-                }
-                addBasicStudentParamsList.add(basicStudentParams);
-            }
-
-            List<BasicStudent> basicStudentList = this.editEntityHelp(addBasicStudentParamsList, sysUser);
-            this.saveOrUpdateBatch(basicStudentList);
+            List<BasicStudentExtrasParam> basicStudentExtrasParamList = datasource.stream().flatMap(e -> {
+                BasicStudentExtrasParam basicStudentExtrasParam = new BasicStudentExtrasParam();
+                basicStudentExtrasParam.setStudentName(e.getStudentName());
+                basicStudentExtrasParam.setStudentCode(e.getStudentCode());
+                basicStudentExtrasParam.setPhoneNumber(e.getPhoneNumber());
+                basicStudentExtrasParam.setCollegeName(e.getCollegeName());
+                basicStudentExtrasParam.setMajorName(e.getMajorName());
+                basicStudentExtrasParam.setClazzName(e.getClazzName());
+                return Stream.of(basicStudentExtrasParam);
+            }).collect(Collectors.toList());
+            this.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, sysUser);
+            map.put("dataCount", datasource.size());
         }
         return map;
     }

+ 0 - 6
teachcloud-common/src/main/resources/mapper/BasicStudentMapper.xml

@@ -15,17 +15,11 @@
         SELECT
             s.clazz_id classId,
             clz.clazz_name className,
-#             bc.print_house_id printHouseId,
-#             so.name printHouseName,
             COUNT(1) studentCount
         FROM
             basic_student s
                 LEFT JOIN
             basic_clazz clz ON s.clazz_id = clz.id and clz.enable = true
-#                 LEFT JOIN
-#             basic_campus bc ON clz.campus_id = bc.id
-#                 LEFT JOIN
-#             sys_org so ON bc.print_house_id = so.id
         WHERE
             s.school_id = #{schoolId}
             <if test="stringList != null and stringList != '' and stringList.size > 0">