浏览代码

feat: 课程批量导入允许多条课程编号相同的课程班级进行累加操作

caozixuan 3 年之前
父节点
当前提交
f9244c1f14

+ 2 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCourseController.java

@@ -88,7 +88,8 @@ public class BasicCourseController {
     @ApiOperation(value = "课程管理-查询")
     @ApiOperation(value = "课程管理-查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findBasicCampusList(@ApiParam(value = "课程名称(模糊查询)") @RequestParam(required = false) String courseName,
+    public Result findBasicCampusList(@ApiParam(value = "所属机构id") @RequestParam(required = false) String belongOrgId,
+                                      @ApiParam(value = "课程名称(模糊查询)") @RequestParam(required = false) String courseName,
                                       @ApiParam(value = "创建时间(起始位置)") @RequestParam(required = false) String startCreateTime,
                                       @ApiParam(value = "创建时间(起始位置)") @RequestParam(required = false) String startCreateTime,
                                       @ApiParam(value = "创建时间(终止位置)") @RequestParam(required = false) String endCreateTime,
                                       @ApiParam(value = "创建时间(终止位置)") @RequestParam(required = false) String endCreateTime,
                                       @ApiParam(value = "状态") @RequestParam(required = false) Boolean enable,
                                       @ApiParam(value = "状态") @RequestParam(required = false) Boolean enable,

+ 6 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicCourseParams.java

@@ -8,7 +8,7 @@ import org.hibernate.validator.constraints.Range;
 
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;
-import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * @Description: 基础课程参数
  * @Description: 基础课程参数
@@ -40,7 +40,7 @@ public class BasicCourseParams {
     @JsonSerialize(using = ToStringSerializer.class)
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "授课班级集合")
     @ApiModelProperty(value = "授课班级集合")
     @NotEmpty(message = "请输入班级名称")
     @NotEmpty(message = "请输入班级名称")
-    private List<Long> clazzIdList;
+    private Set<Long> clazzIdSet;
 
 
     public Long getId() {
     public Long getId() {
         return id;
         return id;
@@ -74,11 +74,11 @@ public class BasicCourseParams {
         this.teachingRoomId = teachingRoomId;
         this.teachingRoomId = teachingRoomId;
     }
     }
 
 
-    public List<Long> getClazzIdList() {
-        return clazzIdList;
+    public Set<Long> getClazzIdSet() {
+        return clazzIdSet;
     }
     }
 
 
-    public void setClazzIdList(List<Long> clazzIdList) {
-        this.clazzIdList = clazzIdList;
+    public void setClazzIdSet(Set<Long> clazzIdSet) {
+        this.clazzIdSet = clazzIdSet;
     }
     }
 }
 }

+ 3 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicUserCourseService.java

@@ -5,6 +5,7 @@ import com.qmth.teachcloud.common.entity.BasicUserCourse;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -24,11 +25,11 @@ public interface BasicUserCourseService extends IService<BasicUserCourse> {
      * 根据课程id和班级集合更新'basic_user_course'表
      * 根据课程id和班级集合更新'basic_user_course'表
      * 逻辑:课程id查询出所有该课程相关记录并删除,添加和班级对应关系
      * 逻辑:课程id查询出所有该课程相关记录并删除,添加和班级对应关系
      * @param courseId 课程id
      * @param courseId 课程id
-     * @param clazzIdList 班级集合
+     * @param clazzIdSet 班级集合
      * @param sysUser 执行人
      * @param sysUser 执行人
      * @param orgId 机构权限id
      * @param orgId 机构权限id
      */
      */
-    void updateByCourseIdAndClazzList(Long courseId, List<Long> clazzIdList,SysUser sysUser,Long orgId);
+    void updateByCourseIdAndClazzList(Long courseId, Set<Long> clazzIdSet, SysUser sysUser, Long orgId);
 
 
     List<BasicUserCourse> listBySchoolIdAndCourseCode(Long schoolId, String courseCode);
     List<BasicUserCourse> listBySchoolIdAndCourseCode(Long schoolId, String courseCode);
 }
 }

+ 35 - 16
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

@@ -204,6 +204,8 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
         SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
         SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
         Long schoolId = sysUser.getSchoolId();
         Long schoolId = sysUser.getSchoolId();
         List<BasicCourseParams> addBasicCourseParamsList = new ArrayList<>();
         List<BasicCourseParams> addBasicCourseParamsList = new ArrayList<>();
+        Map<String,BasicCourseParams> courseMap = new HashMap<>();
+
 
 
         for (int i = 0; i < finalList.size(); i++) {
         for (int i = 0; i < finalList.size(); i++) {
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
@@ -220,13 +222,17 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                 String teachingRoomName = basicCourseImportDto.getTeachingRoomName();
                 String teachingRoomName = basicCourseImportDto.getTeachingRoomName();
                 String clazz = basicCourseImportDto.getClazz();
                 String clazz = basicCourseImportDto.getClazz();
 
 
-                SysOrg sysOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getSchoolId, schoolId).eq(SysOrg::getEnable, true).eq(SysOrg::getType, OrgTypeEnum.TEACHING_ROOM).eq(SysOrg::getName, teachingRoomName));
+                SysOrg sysOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
+                        .eq(SysOrg::getSchoolId, schoolId)
+                        .eq(SysOrg::getEnable, true)
+                        .eq(SysOrg::getType, OrgTypeEnum.TEACHING_ROOM)
+                        .eq(SysOrg::getName, teachingRoomName));
                 if (Objects.isNull(sysOrg)) {
                 if (Objects.isNull(sysOrg)) {
                     throw ExceptionResultEnum.ERROR.exception("输入的教研室【" + teachingRoomName + "】不存在");
                     throw ExceptionResultEnum.ERROR.exception("输入的教研室【" + teachingRoomName + "】不存在");
                 }
                 }
                 Long teachingRoomId = sysOrg.getId();
                 Long teachingRoomId = sysOrg.getId();
                 String[] clazzList = clazz.split(clazzSplit);
                 String[] clazzList = clazz.split(clazzSplit);
-                List<Long> clazzIdList = new ArrayList<>();
+                Set<Long> clazzIdSet = new TreeSet<>();
                 for (String clzName : clazzList) {
                 for (String clzName : clazzList) {
                     BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
                     BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
                             .eq(BasicClazz::getEnable, true)
                             .eq(BasicClazz::getEnable, true)
@@ -235,19 +241,35 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                     if (Objects.isNull(basicClazz)) {
                     if (Objects.isNull(basicClazz)) {
                         throw ExceptionResultEnum.ERROR.exception("所选择【班级】" + clzName + "不存在");
                         throw ExceptionResultEnum.ERROR.exception("所选择【班级】" + clzName + "不存在");
                     }
                     }
-                    clazzIdList.add(basicClazz.getId());
+                    clazzIdSet.add(basicClazz.getId());
                 }
                 }
 
 
                 BasicCourseParams basicCourseParams = new BasicCourseParams();
                 BasicCourseParams basicCourseParams = new BasicCourseParams();
-                basicCourseParams.setCourseCode(courseCode);
-                basicCourseParams.setCourseName(courseName);
-                basicCourseParams.setTeachingRoomId(teachingRoomId);
-                basicCourseParams.setClazzIdList(clazzIdList);
-                BasicCourse old = this.getOne(new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getEnable, true).eq(BasicCourse::getCode, courseCode));
-                if (Objects.nonNull(old)) {
-                    basicCourseParams.setId(old.getId());
+                if (courseMap.containsKey(courseCode)){
+                    basicCourseParams = courseMap.get(courseCode);
+                    if (!courseName.equals(basicCourseParams.getCourseName())){
+                        throw ExceptionResultEnum.ERROR.exception("excel中相同【课程编号】:" + courseCode + ",存在不同的【课程名称】异常");
+                    }
+                    if (!teachingRoomId.equals(basicCourseParams.getTeachingRoomId())){
+                        throw ExceptionResultEnum.ERROR.exception("excel中相同【课程编号】:" + courseCode + ",存在不同的【所属教研室】异常");
+                    }
+                    Set<Long> oldClazzIdSet = basicCourseParams.getClazzIdSet();
+                    oldClazzIdSet.addAll(clazzIdSet);
+                } else {
+                    basicCourseParams.setCourseCode(courseCode);
+                    basicCourseParams.setCourseName(courseName);
+                    basicCourseParams.setTeachingRoomId(teachingRoomId);
+                    basicCourseParams.setClazzIdSet(clazzIdSet);
+                    BasicCourse old = this.getOne(new QueryWrapper<BasicCourse>().lambda()
+                            .eq(BasicCourse::getSchoolId, schoolId)
+                            .eq(BasicCourse::getEnable, true)
+                            .eq(BasicCourse::getCode, courseCode));
+                    if (Objects.nonNull(old)) {
+                        basicCourseParams.setId(old.getId());
+                    }
+                    courseMap.put(courseCode,basicCourseParams);
+                    addBasicCourseParamsList.add(basicCourseParams);
                 }
                 }
-                addBasicCourseParamsList.add(basicCourseParams);
             }
             }
             List<BasicCourse> editBasicCourse = this.editEntityHelp(addBasicCourseParamsList, sysUser);
             List<BasicCourse> editBasicCourse = this.editEntityHelp(addBasicCourseParamsList, sysUser);
             this.saveOrUpdateBatch(editBasicCourse);
             this.saveOrUpdateBatch(editBasicCourse);
@@ -303,10 +325,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                 throw ExceptionResultEnum.ERROR.exception("所选教研室不存在");
                 throw ExceptionResultEnum.ERROR.exception("所选教研室不存在");
             }
             }
             // 校验班级
             // 校验班级
-            List<Long> clazzIdList = basicCourseParams.getClazzIdList();
-            if (clazzIdList.size() != clazzIdList.stream().distinct().count()) {
-                throw ExceptionResultEnum.ERROR.exception("输入的班级重复");
-            }
+            Set<Long> clazzIdSet = basicCourseParams.getClazzIdSet();
 
 
             //基础数据组装
             //基础数据组装
             Long orgId;
             Long orgId;
@@ -336,7 +355,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
             basicCourse.setOrgId(orgId);
             basicCourse.setOrgId(orgId);
 
 
             // 根据课程id和授课班级集合更新'basic_user_course'表
             // 根据课程id和授课班级集合更新'basic_user_course'表
-            basicUserCourseService.updateByCourseIdAndClazzList(id, clazzIdList, sysUser, orgId);
+            basicUserCourseService.updateByCourseIdAndClazzList(id, clazzIdSet, sysUser, orgId);
 
 
             basicCourseList.add(basicCourse);
             basicCourseList.add(basicCourse);
         }
         }

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

@@ -82,6 +82,7 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public Boolean removeBasicStudentBatch(List<Long> idList) {
     public Boolean removeBasicStudentBatch(List<Long> idList) {
+
         if (idList.size() == 0) {
         if (idList.size() == 0) {
             throw ExceptionResultEnum.ERROR.exception("请选择要删除的目标");
             throw ExceptionResultEnum.ERROR.exception("请选择要删除的目标");
         }
         }

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

@@ -17,7 +17,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
-import java.util.stream.Collectors;
+import java.util.Set;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -56,14 +56,14 @@ public class BasicUserCourseServiceImpl extends ServiceImpl<BasicUserCourseMappe
 
 
     @Transactional
     @Transactional
     @Override
     @Override
-    public void updateByCourseIdAndClazzList(Long courseId, List<Long> clazzIdList, SysUser sysUser, Long orgId) {
+    public void updateByCourseIdAndClazzList(Long courseId, Set<Long> clazzIdSet, SysUser sysUser, Long orgId) {
         List<BasicUserCourse> willAddList = new ArrayList<>();
         List<BasicUserCourse> willAddList = new ArrayList<>();
 
 
         // 删除原有的全部
         // 删除原有的全部
         this.remove(new QueryWrapper<BasicUserCourse>().lambda().eq(BasicUserCourse::getCourseId,courseId).gt(BasicUserCourse::getId,0));
         this.remove(new QueryWrapper<BasicUserCourse>().lambda().eq(BasicUserCourse::getCourseId,courseId).gt(BasicUserCourse::getId,0));
 
 
         // 新增
         // 新增
-        for (Long clazzId : clazzIdList) {
+        for (Long clazzId : clazzIdSet) {
             if (Objects.isNull(basicClazzService.getById(clazzId))){
             if (Objects.isNull(basicClazzService.getById(clazzId))){
                 throw ExceptionResultEnum.ERROR.exception("班级主键不存在");
                 throw ExceptionResultEnum.ERROR.exception("班级主键不存在");
             }
             }