فهرست منبع

Merge branch 'dev_v2.2.1' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.2.1

xiaof 3 سال پیش
والد
کامیت
a54531f71a
13فایلهای تغییر یافته به همراه274 افزوده شده و 86 حذف شده
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  2. 3 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicMajorController.java
  3. 2 26
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  4. 38 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/excel/BasicStudentImportDto.java
  5. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicClazzParams.java
  6. 1 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/SystemCodeEnum.java
  7. 2 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicMajorService.java
  8. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicStudentService.java
  9. 14 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java
  10. 16 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java
  11. 12 5
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicMajorServiceImpl.java
  12. 149 37
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java
  13. 34 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

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

@@ -1134,7 +1134,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     String studentName = basicStudentImportDto.getStudentName();
                     String studentCode = basicStudentImportDto.getStudentCode();
                     String phoneNumber = basicStudentImportDto.getPhoneNumber();
-                    String clazz = basicStudentImportDto.getClazz();
+                    String clazzName = basicStudentImportDto.getClazzName();
 
                     // 检验excel中
                     // 检验学号

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

@@ -4,6 +4,7 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.bean.params.BasicMajorParams;
 import com.qmth.distributed.print.business.bean.result.EditResult;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.service.BasicMajorService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.util.Result;
@@ -50,7 +51,8 @@ public class BasicMajorController {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
-        return ResultUtil.ok(basicMajorService.saveBasicMajor(basicMajorParams));
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(basicMajorService.saveBasicMajor(basicMajorParams,sysUser));
     }
 
     @ApiOperation(value = "专业管理-删除(逻辑)")

+ 2 - 26
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -1,6 +1,5 @@
 package com.qmth.distributed.print.api;
 
-import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
@@ -10,7 +9,6 @@ import com.qmth.distributed.print.business.bean.params.LoginParam;
 import com.qmth.distributed.print.business.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.enums.DictionaryEnum;
-import com.qmth.distributed.print.business.enums.SystemCodeEnum;
 import com.qmth.distributed.print.business.service.BasicVerifyCodeService;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
@@ -22,7 +20,6 @@ import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.*;
-import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -78,9 +75,6 @@ public class SysController {
     @Resource
     TeachcloudCommonService teachcloudCommonService;
 
-    @Resource
-    ConvertUtil convertUtil;
-
     @Resource
     BasicCampusService basicCampusService;
 
@@ -326,26 +320,8 @@ public class SysController {
 //    @Aac(auth = BOOL.FALSE)
     public Result getCode(@ApiParam(value = "编码类型", required = true) @RequestParam SystemCodeEnum type) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Long schoolId = sysUser.getSchoolId();
-        String date = DateUtil.today().replace("-", "");
-        String paperNumber = "";
-        int count = 0;
-        do {
-            paperNumber = convertUtil.getIncre(date, type.getModel() + schoolId, type.getDigit());
-            switch (type) {
-                case CAMPUS_CODE:
-                    count = basicCampusService.count(new QueryWrapper<BasicCampus>().lambda()
-                            .eq(BasicCampus::getCampusCode, paperNumber)
-                            .eq(BasicCampus::getSchoolId, schoolId));
-                    break;
-                case COURSE_CODE:
-                    count = basicCourseService.count(new QueryWrapper<BasicCourse>().lambda()
-                            .eq(BasicCourse::getCode, paperNumber)
-                            .eq(BasicCourse::getSchoolId, schoolId));
-                    break;
-            }
-        } while (count > 0);
-        return ResultUtil.ok((Object) paperNumber);
+        String number = teachcloudCommonService.getSysIncrCode(type,sysUser);
+        return ResultUtil.ok((Object) number);
     }
 
     @ApiOperation(value = "共用接口-查询字典")

+ 38 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/excel/BasicStudentImportDto.java

@@ -22,9 +22,17 @@ public class BasicStudentImportDto implements Serializable {
     @ExcelNote(value = "手机号")
     private String phoneNumber;
 
+    @ExcelNote(value = "校区")
+    private String campusName;
+
+    @ExcelNote(value = "学院")
+    private String collegeName;
+
+    @ExcelNote(value = "专业")
+    private String majorName;
+
     @ExcelNote(value = "班级")
-    @NotNull
-    private String clazz;
+    private String clazzName;
 
     public String getStudentName() {
         return studentName;
@@ -50,11 +58,35 @@ public class BasicStudentImportDto implements Serializable {
         this.phoneNumber = phoneNumber;
     }
 
-    public String getClazz() {
-        return clazz;
+    public String getCampusName() {
+        return campusName;
+    }
+
+    public void setCampusName(String campusName) {
+        this.campusName = campusName;
+    }
+
+    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 setClazz(String clazz) {
-        this.clazz = clazz;
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
     }
 }

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicClazzParams.java

@@ -36,7 +36,7 @@ public class BasicClazzParams {
     private Long majorId;
 
     @ApiModelProperty(value = "班级编号")
-    @DBVerify(value = "班级编号",required = true)
+    @DBVerify(value = "班级编号")
     private String clazzCode;
 
     @ApiModelProperty(value = "班级名称")

+ 1 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/SystemCodeEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/SystemCodeEnum.java

@@ -1,6 +1,4 @@
-package com.qmth.distributed.print.business.enums;
-
-import com.qmth.teachcloud.common.enums.EnumResult;
+package com.qmth.teachcloud.common.enums;
 
 import java.util.ArrayList;
 import java.util.List;

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicMajorService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.params.BasicMajorParams;
 import com.qmth.teachcloud.common.bean.result.BasicMajorResult;
 import com.qmth.teachcloud.common.entity.BasicMajor;
+import com.qmth.teachcloud.common.entity.SysUser;
 
 /**
  * <p>
@@ -32,7 +33,7 @@ public interface BasicMajorService extends IService<BasicMajor> {
      * @param basicMajorParams 编辑参数
      * @return 编辑后该专业id
      */
-    Long saveBasicMajor(BasicMajorParams basicMajorParams) throws IllegalAccessException;
+    Long saveBasicMajor(BasicMajorParams basicMajorParams, SysUser requestUser) throws IllegalAccessException;
 
     /**
      * 专业删除

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

@@ -59,5 +59,5 @@ public interface BasicStudentService extends IService<BasicStudent> {
      * @param map       参数
      * @return 结果
      */
-    Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map);
+    Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws IllegalAccessException;
 }

+ 14 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java

@@ -11,10 +11,10 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUserRole;
 import com.qmth.teachcloud.common.enums.AppSourceEnum;
 import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
+import com.qmth.teachcloud.common.enums.SystemCodeEnum;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
@@ -235,4 +235,17 @@ public interface TeachcloudCommonService {
      * @return
      */
     public LoginResult login(String password, SysUser sysUser, AppSourceEnum appSource) throws NoSuchAlgorithmException;
+
+    /**
+     * 根据编码类型获取系统编码
+     * @param type 编码类型
+     * @return 系统编码
+     */
+    /**
+     * 根据编码类型获取系统编码
+     * @param type 编码类型
+     * @param requestUser 请求的用户
+     * @return 系统编码
+     */
+    public String getSysIncrCode(SystemCodeEnum type,SysUser requestUser);
 }

+ 16 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java

@@ -36,13 +36,13 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
     @Resource
     private BasicClazzMapper basicClazzMapper;
     @Resource
-    private TeachcloudCommonService teachcloudCommonService;
-    @Resource
     private BasicStudentService basicStudentService;
     @Resource
     private BasicUserCourseService basicUserCourseService;
     @Resource
     private BasicCampusService basicCampusService;
+    @Resource
+    private BasicMajorService basicMajorService;
 
     @Override
     public IPage<BasicClazzResult> basicClazzPage(String queryParams, int pageNumber, int pageSize) {
@@ -264,7 +264,10 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
             if (Objects.isNull(basicCampusService.getById(campusId))) {
                 throw ExceptionResultEnum.ERROR.exception("所选校区不存在");
             }
-            // TODO: 2021/11/2 校验专业不存在
+            if (Objects.isNull(basicMajorService.getById(majorId))){
+                throw ExceptionResultEnum.ERROR.exception("所选专业不存在");
+            }
+
             // 检验班级名称在学校的唯一性
             BasicClazz checkName = this.getOne(new QueryWrapper<BasicClazz>().lambda()
                     .eq(BasicClazz::getSchoolId, schoolId)
@@ -305,6 +308,16 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
                 orgId = old.getOrgId();
                 basicClazz.setId(id);
                 basicClazz.setUpdateId(sysUser.getId());
+                // 如果更新了班级所属的专业或校区则更新学生级联关系
+                if (!majorId.equals(old.getMajorId()) || !campusId.equals(old.getCampusId())){
+                    List<BasicStudent> basicStudentList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda()
+                            .eq(BasicStudent::getClazzId,id));
+                    basicStudentList.forEach(e -> {
+                        e.setMajorId(majorId);
+                        e.setCampusId(campusId);
+                    });
+                    basicStudentService.updateBatchById(basicStudentList);
+                }
             }
             basicClazz.setOrgId(orgId);
             editEntityList.add(basicClazz);

+ 12 - 5
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicMajorServiceImpl.java

@@ -19,7 +19,6 @@ import com.qmth.teachcloud.common.mapper.BasicMajorMapper;
 import com.qmth.teachcloud.common.service.BasicClazzService;
 import com.qmth.teachcloud.common.service.BasicMajorService;
 import com.qmth.teachcloud.common.service.BasicStudentService;
-import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -50,11 +49,11 @@ public class BasicMajorServiceImpl extends ServiceImpl<BasicMajorMapper, BasicMa
 
     @Transactional
     @Override
-    public Long saveBasicMajor(BasicMajorParams basicMajorParams) throws IllegalAccessException {
+    public Long saveBasicMajor(BasicMajorParams basicMajorParams,SysUser requestUser) throws IllegalAccessException {
         SystemConstant.verifyDBFields(basicMajorParams,basicMajorParams.getClass());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+
         Long id = basicMajorParams.getId();
-        Long schoolId = sysUser.getSchoolId();
+        Long schoolId = requestUser.getSchoolId();
         String majorName = basicMajorParams.getMajorName();
         Long collegeId = basicMajorParams.getCollegeId();
 
@@ -77,6 +76,14 @@ public class BasicMajorServiceImpl extends ServiceImpl<BasicMajorMapper, BasicMa
                     .eq(BasicMajor::getId,id)
                     .set(BasicMajor::getName,majorName)
                     .set(BasicMajor::getBelongOrgId,collegeId));
+
+            // 如果更新了专业所属学院则更新学生级联关系
+            if (!collegeId.equals(old.getBelongOrgId())){
+                List<BasicStudent> basicStudentList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getMajorId,id));
+                basicStudentList.forEach(e -> e.setBelongOrgId(collegeId));
+                basicStudentService.updateBatchById(basicStudentList);
+            }
+
         }else {
             // 新增
             id = SystemConstant.getDbUuid();
@@ -87,7 +94,7 @@ public class BasicMajorServiceImpl extends ServiceImpl<BasicMajorMapper, BasicMa
             basicMajor.setSchoolId(schoolId);
             basicMajor.setCode(null);
             basicMajor.setBelongOrgId(collegeId);
-            basicMajor.setOrgId(sysUser.getOrgId());
+            basicMajor.setOrgId(requestUser.getOrgId());
             this.save(basicMajor);
         }
         return id;

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

@@ -1,23 +1,21 @@
 package com.qmth.teachcloud.common.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.BasicMajorParams;
 import com.qmth.teachcloud.common.bean.params.BasicStudentParams;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
-import com.qmth.teachcloud.common.entity.BasicClazz;
-import com.qmth.teachcloud.common.entity.BasicMajor;
-import com.qmth.teachcloud.common.entity.BasicStudent;
-import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
-import com.qmth.teachcloud.common.service.*;
-import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -46,6 +44,8 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     private BasicMajorService basicMajorService;
     @Resource
     private SysOrgService sysOrgService;
+    @Resource
+    private BasicCampusService basicCampusService;
 
     @Override
     public IPage<BasicStudentResult> basicStudentPage(String queryParams,Long campusId, Set<Long> clazzIdList,int pageNumber, int pageSize) {
@@ -90,9 +90,18 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
+    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 = campusName
+        Map<String,BasicCampus> campusMap = new HashMap<>();
+        // key = collegeName
+        Map<String,SysOrg> collegeMap = new HashMap<>();
+        // key = collegeId + "-" + majorName
+        Map<String,Long> majorMap = new HashMap<>();
+        // key = majorId + "-" + clazzName
+        Map<String,Long> clazzMap = new HashMap<>();
 
         List<BasicStudentParams> addBasicStudentParamsList = new ArrayList<>();
         for (int i = 0; i < finalList.size(); i++) {
@@ -117,21 +126,119 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
                 String studentName = basicStudentImportDto.getStudentName();
                 String studentCode = basicStudentImportDto.getStudentCode();
                 String phoneNumber = basicStudentImportDto.getPhoneNumber();
-                String clazz = basicStudentImportDto.getClazz();
-                BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
-                        .eq(BasicClazz::getEnable,true)
-                        .eq(BasicClazz::getClazzName,clazz)
-                        .eq(BasicClazz::getSchoolId,schoolId));
-                if (Objects.isNull(basicClazz)){
-                    throw ExceptionResultEnum.ERROR.exception("【班级】" + clazz + "还没有构建");
+                String campusName = basicStudentImportDto.getCampusName();
+                String collegeName = basicStudentImportDto.getCollegeName();
+                String majorName = basicStudentImportDto.getMajorName();
+                String clazzName = basicStudentImportDto.getClazzName();
+
+                // 校区
+                Long campusId = null;
+                if (SystemConstant.strNotNull(campusName)) {
+                    BasicCampus basicCampus;
+                    if (campusMap.containsKey(campusName)) {
+                        basicCampus = campusMap.get(campusName);
+                    } else {
+                        basicCampus = basicCampusService.getOne(new QueryWrapper<BasicCampus>().lambda()
+                                .eq(BasicCampus::getSchoolId, schoolId)
+                                .eq(BasicCampus::getCampusName, campusName));
+                        campusMap.put(campusName, basicCampus);
+                    }
+                    campusId = basicCampus.getId();
+                }
+
+                // 学院
+                Long collegeId = null;
+                if (SystemConstant.strNotNull(collegeName)){
+                    SysOrg sysOrg;
+                    if (collegeMap.containsKey(collegeName)) {
+                        sysOrg = collegeMap.get(collegeName);
+                    } else {
+                        sysOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
+                                .eq(SysOrg::getSchoolId, schoolId)
+                                .eq(SysOrg::getName, collegeName));
+                        collegeMap.put(collegeName, sysOrg);
+                    }
+                    collegeId = sysOrg.getId();
+                }
+
+                // 专业
+                Long majorId = null;
+                if (SystemConstant.strNotNull(majorName)) {
+                    if (!SystemConstant.longNotNull(collegeId)) {
+                        throw ExceptionResultEnum.ERROR.exception("学生专业信息缺失学院信息异常");
+                    }
+                    String majorKey = collegeId + 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::getBelongOrgId, collegeId)
+                                .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(campusId)){
+                        throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失校区信息异常");
+                    }
+                    if (!SystemConstant.longNotNull(collegeId)){
+                        throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失学院信息异常");
+                    }
+                    if (!SystemConstant.longNotNull(majorId)){
+                        throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失专业信息异常");
+                    }
 
+                    String clazzKey = majorId + link + clazzName;
+                    if (clazzMap.containsKey(clazzKey)){
+                        clazzId = clazzMap.get(clazzKey);
+                    }else {
+                        BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
+                                .eq(BasicClazz::getSchoolId,schoolId)
+                                .eq(BasicClazz::getMajorId,majorId)
+                                .eq(BasicClazz::getClazzName,clazzName));
+                        if (Objects.isNull(basicClazz)){
+                            // 新增一个clazz
+                            BasicClazzParams basicClazzParams = new BasicClazzParams();
+                            basicClazzParams.setCampusId(campusId);
+                            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);
-                basicStudentParams.setClazzId(basicClazz.getId());
+                if (SystemConstant.longNotNull(campusId)){
+                    basicStudentParams.setCampusId(campusId);
+                }
+                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())
@@ -146,7 +253,6 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             List<BasicStudent> basicStudentList = this.editEntityHelp(addBasicStudentParamsList, sysUser);
             this.saveOrUpdateBatch(basicStudentList);
         }
-
         return map;
     }
 
@@ -171,33 +277,39 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             Long collegeId = basicStudentParams.getCollegeId();
 
             // 班级验证
-            BasicClazz basicClazz = basicClazzService.getById(clazzId);
-            if (Objects.isNull(basicClazz)) {
-                throw ExceptionResultEnum.ERROR.exception("所选班级不存在");
-            }
-            if (SystemConstant.longNotNull(campusId)){
-                if (!campusId.equals(basicClazz.getCampusId())){
-                    throw ExceptionResultEnum.ERROR.exception("学生所属班级信息和学生信息中【校区】不对应");
+            if (SystemConstant.longNotNull(clazzId)){
+                // 如果有班级id 再验证
+                BasicClazz basicClazz = basicClazzService.getById(clazzId);
+                if (Objects.isNull(basicClazz)) {
+                    throw ExceptionResultEnum.ERROR.exception("所选班级不存在");
                 }
-            }
-            if (SystemConstant.longNotNull(majorId)){
-                if (!majorId.equals(basicClazz.getMajorId())){
-                    throw ExceptionResultEnum.ERROR.exception("学生所属班级信息和学生信息中【专业】不对应");
+                if (SystemConstant.longNotNull(campusId)){
+                    if (!campusId.equals(basicClazz.getCampusId())){
+                        throw ExceptionResultEnum.ERROR.exception("学生所属班级信息和学生信息中【校区】不对应");
+                    }
+                }
+                if (SystemConstant.longNotNull(majorId)){
+                    if (!majorId.equals(basicClazz.getMajorId())){
+                        throw ExceptionResultEnum.ERROR.exception("学生所属班级信息和学生信息中【专业】不对应");
+                    }
                 }
             }
+
+
             // 专业验证
-            BasicMajor basicMajor = basicMajorService.getById(majorId);
-            if (Objects.isNull(basicMajor)) {
-                throw ExceptionResultEnum.ERROR.exception("所选专业不存在");
-            }
-            if (SystemConstant.longNotNull(collegeId)){
-                if (!collegeId.equals(basicMajor.getBelongOrgId())){
-                    throw ExceptionResultEnum.ERROR.exception("学生所属专业信息和学生信息中【学院】不对应");
+            if (SystemConstant.longNotNull(majorId)){
+                BasicMajor basicMajor = basicMajorService.getById(majorId);
+                if (Objects.isNull(basicMajor)) {
+                    throw ExceptionResultEnum.ERROR.exception("所选专业不存在");
+                }
+                if (SystemConstant.longNotNull(collegeId)){
+                    if (!collegeId.equals(basicMajor.getBelongOrgId())){
+                        throw ExceptionResultEnum.ERROR.exception("学生所属专业信息和学生信息中【学院】不对应");
+                    }
                 }
             }
 
             Long id = basicStudentParams.getId();
-
             // 检验学号在学校的唯一性
             BasicStudent checkCode = this.getOne(new QueryWrapper<BasicStudent>().lambda()
                     .eq(BasicStudent::getSchoolId, schoolId)

+ 34 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.common.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ZipUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -94,6 +95,15 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     @Resource
     SysUserService sysUserService;
 
+    @Resource
+    ConvertUtil convertUtil;
+
+    @Resource
+    BasicCampusService basicCampusService;
+
+    @Resource
+    BasicCourseService basicCourseService;
+
 
     /**
      * 获取用户菜单
@@ -885,6 +895,30 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         return loginResult;
     }
 
+    @Override
+    public String getSysIncrCode(SystemCodeEnum type,SysUser requestUser) {
+        Long schoolId = requestUser.getSchoolId();
+        String date = DateUtil.today().replace("-", "");
+        String paperNumber = "";
+        int count = 0;
+        do {
+            paperNumber = convertUtil.getIncre(date, type.getModel() + schoolId, type.getDigit());
+            switch (type) {
+                case CAMPUS_CODE:
+                    count = basicCampusService.count(new QueryWrapper<BasicCampus>().lambda()
+                            .eq(BasicCampus::getCampusCode, paperNumber)
+                            .eq(BasicCampus::getSchoolId, schoolId));
+                    break;
+                case COURSE_CODE:
+                    count = basicCourseService.count(new QueryWrapper<BasicCourse>().lambda()
+                            .eq(BasicCourse::getCode, paperNumber)
+                            .eq(BasicCourse::getSchoolId, schoolId));
+                    break;
+            }
+        } while (count > 0);
+        return paperNumber;
+    }
+
     private Set<Long> getOrgIds(Set<Long> stringSet, List<OrgDto> orgDtos, Long parentId) {
         for (OrgDto orgDto : orgDtos) {
             Long tempParentId = orgDto.getParentId();