浏览代码

基础课程管理导入加入老师

wangliang 2 年之前
父节点
当前提交
f19bfdd81a

+ 30 - 1
distributed-print-business/src/main/resources/db/install/teachcloud_db.sql

@@ -3315,4 +3315,33 @@ INSERT INTO `sys_role_privilege` VALUES (500, 11, 854, 1);
 INSERT INTO `sys_role_privilege` VALUES (501, 11, 855, 1);
 INSERT INTO `sys_role_privilege` VALUES (502, 11, 857, 1);
 INSERT INTO `sys_role_privilege` VALUES (503, 11, 858, 1);
-INSERT INTO `sys_role_privilege` VALUES (504, 11, 859, 1);
+INSERT INTO `sys_role_privilege` VALUES (504, 11, 859, 1);
+INSERT INTO `sys_role_privilege` VALUES (505, 10, 832, 1);
+INSERT INTO `sys_role_privilege` VALUES (506, 10, 576, 1);
+INSERT INTO `sys_role_privilege` VALUES (507, 10, 833, 1);
+INSERT INTO `sys_role_privilege` VALUES (508, 10, 834, 1);
+INSERT INTO `sys_role_privilege` VALUES (509, 10, 835, 1);
+INSERT INTO `sys_role_privilege` VALUES (510, 10, 836, 1);
+INSERT INTO `sys_role_privilege` VALUES (511, 10, 837, 1);
+INSERT INTO `sys_role_privilege` VALUES (512, 10, 838, 1);
+INSERT INTO `sys_role_privilege` VALUES (513, 10, 839, 1);
+INSERT INTO `sys_role_privilege` VALUES (514, 10, 840, 1);
+INSERT INTO `sys_role_privilege` VALUES (515, 10, 841, 1);
+INSERT INTO `sys_role_privilege` VALUES (516, 10, 842, 1);
+INSERT INTO `sys_role_privilege` VALUES (517, 10, 650, 1);
+INSERT INTO `sys_role_privilege` VALUES (518, 10, 843, 1);
+INSERT INTO `sys_role_privilege` VALUES (519, 10, 844, 1);
+INSERT INTO `sys_role_privilege` VALUES (520, 10, 77, 1);
+INSERT INTO `sys_role_privilege` VALUES (521, 10, 845, 1);
+INSERT INTO `sys_role_privilege` VALUES (522, 10, 846, 1);
+INSERT INTO `sys_role_privilege` VALUES (523, 10, 847, 1);
+INSERT INTO `sys_role_privilege` VALUES (524, 10, 848, 1);
+INSERT INTO `sys_role_privilege` VALUES (525, 10, 849, 1);
+INSERT INTO `sys_role_privilege` VALUES (526, 10, 850, 1);
+INSERT INTO `sys_role_privilege` VALUES (527, 10, 851, 1);
+INSERT INTO `sys_role_privilege` VALUES (528, 10, 852, 1);
+INSERT INTO `sys_role_privilege` VALUES (529, 10, 853, 1);
+INSERT INTO `sys_role_privilege` VALUES (530, 10, 866, 1);
+INSERT INTO `sys_role_privilege` VALUES (531, 10, 830, 1);
+INSERT INTO `sys_role_privilege` VALUES (532, 10, 831, 1);
+INSERT INTO `sys_role_privilege` VALUES (533, 10, 575, 1);

+ 31 - 1
distributed-print-business/src/main/resources/db/log/3.2.5-脚本-wangl.sql

@@ -1 +1,31 @@
-alter table exam_student add UNIQUE index `unique_ticket_number_idx`(`school_id`,`ticket_number`);
+alter table exam_student add UNIQUE index `unique_ticket_number_idx`(`school_id`,`ticket_number`);
+
+INSERT INTO `sys_role_privilege` VALUES (505, 10, 832, 1);
+INSERT INTO `sys_role_privilege` VALUES (506, 10, 576, 1);
+INSERT INTO `sys_role_privilege` VALUES (507, 10, 833, 1);
+INSERT INTO `sys_role_privilege` VALUES (508, 10, 834, 1);
+INSERT INTO `sys_role_privilege` VALUES (509, 10, 835, 1);
+INSERT INTO `sys_role_privilege` VALUES (510, 10, 836, 1);
+INSERT INTO `sys_role_privilege` VALUES (511, 10, 837, 1);
+INSERT INTO `sys_role_privilege` VALUES (512, 10, 838, 1);
+INSERT INTO `sys_role_privilege` VALUES (513, 10, 839, 1);
+INSERT INTO `sys_role_privilege` VALUES (514, 10, 840, 1);
+INSERT INTO `sys_role_privilege` VALUES (515, 10, 841, 1);
+INSERT INTO `sys_role_privilege` VALUES (516, 10, 842, 1);
+INSERT INTO `sys_role_privilege` VALUES (517, 10, 650, 1);
+INSERT INTO `sys_role_privilege` VALUES (518, 10, 843, 1);
+INSERT INTO `sys_role_privilege` VALUES (519, 10, 844, 1);
+INSERT INTO `sys_role_privilege` VALUES (520, 10, 77, 1);
+INSERT INTO `sys_role_privilege` VALUES (521, 10, 845, 1);
+INSERT INTO `sys_role_privilege` VALUES (522, 10, 846, 1);
+INSERT INTO `sys_role_privilege` VALUES (523, 10, 847, 1);
+INSERT INTO `sys_role_privilege` VALUES (524, 10, 848, 1);
+INSERT INTO `sys_role_privilege` VALUES (525, 10, 849, 1);
+INSERT INTO `sys_role_privilege` VALUES (526, 10, 850, 1);
+INSERT INTO `sys_role_privilege` VALUES (527, 10, 851, 1);
+INSERT INTO `sys_role_privilege` VALUES (528, 10, 852, 1);
+INSERT INTO `sys_role_privilege` VALUES (529, 10, 853, 1);
+INSERT INTO `sys_role_privilege` VALUES (530, 10, 866, 1);
+INSERT INTO `sys_role_privilege` VALUES (531, 10, 830, 1);
+INSERT INTO `sys_role_privilege` VALUES (532, 10, 831, 1);
+INSERT INTO `sys_role_privilege` VALUES (533, 10, 575, 1);

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

@@ -139,8 +139,16 @@ public class BasicCourseController {
     @RequestMapping(value = "/data_import", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
+    @Transactional
     public Result basicCourseImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
-        basicCourseService.executeImportBasicCourseLogic(file);
+        List<BasicCourseParams> basicCourseParamsList = basicCourseService.executeImportBasicCourseLogic(file);
+        if (!CollectionUtils.isEmpty(basicCourseParamsList)) {
+            for (BasicCourseParams basicCourseParams : basicCourseParamsList) {
+                if (!CollectionUtils.isEmpty(basicCourseParams.getTeachIdSet())) {
+                    teachCourseService.updateByCourseIdAndTeacherList(basicCourseParams.getId(), basicCourseParams.getTeachIdSet());
+                }
+            }
+        }
         return ResultUtil.ok();
     }
 

+ 25 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/excel/BasicCourseImportDto.java

@@ -14,6 +14,7 @@ import java.io.Serializable;
  */
 @ExcelImportTempleteVaild(value = true)
 public class BasicCourseImportDto implements Serializable {
+
     @ExcelNote(value = "课程名称")
     @ExcelProperty(name = "课程名称", width = 30, index = 1)
     @NotNull
@@ -33,6 +34,30 @@ public class BasicCourseImportDto implements Serializable {
     @ExcelProperty(name = "授课班级", width = 30, index = 4)
     private String clazz;
 
+    @ExcelNote(value = "姓名")
+    @ExcelProperty(name = "姓名", width = 30, index = 5)
+    private String name;
+
+    @ExcelNote(value = "工号")
+    @ExcelProperty(name = "工号", width = 30, index = 6)
+    private String code;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public String getCourseName() {
         return courseName;
     }

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

@@ -95,14 +95,14 @@ public interface BasicCourseService extends IService<BasicCourse> {
      *
      * @param file 文件
      */
-    void executeImportBasicCourseLogic(MultipartFile file) throws IOException, NoSuchFieldException;
+    List<BasicCourseParams> executeImportBasicCourseLogic(MultipartFile file) throws IOException, NoSuchFieldException;
 
     /**
      * 执行批量导入课程逻辑
      *
      * @param finalList 基础课程数据集合
      */
-    void executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList);
+    List<BasicCourseParams> executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList);
 
     /**
      * @param schoolId

+ 45 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

@@ -19,6 +19,7 @@ import com.qmth.teachcloud.common.bean.result.TeachCourseSelectResult;
 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.RoleTypeEnum;
 import com.qmth.teachcloud.common.mapper.BasicCourseMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExcelUtil;
@@ -71,6 +72,9 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     @Resource
     private SysUserService sysUserService;
 
+    @Resource
+    SysUserRoleService sysUserRoleService;
+
     @Override
     public List<BasicCourse> listCoursesByUserId(Long userId) {
         return this.baseMapper.listCoursesByUserId(userId);
@@ -235,7 +239,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     }
 
     @Override
-    public void executeImportBasicCourseLogic(MultipartFile file) throws IOException, NoSuchFieldException {
+    public List<BasicCourseParams> executeImportBasicCourseLogic(MultipartFile file) throws IOException, NoSuchFieldException {
         InputStream inputStream = file.getInputStream();
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicCourseImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
             List<ExcelError> excelErrorTemp = new ArrayList<>();
@@ -254,6 +258,8 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                     String courseCode = basicCourseImportDto.getCourseCode();
                     String teachingRoomName = basicCourseImportDto.getTeachingRoomName();
                     String clazz = basicCourseImportDto.getClazz();
+                    String name = basicCourseImportDto.getName();
+                    String code = basicCourseImportDto.getCode();
 
                     if (courseDtoMap.containsKey(courseCode)) {
                         BasicCourseImportDto primaryCell = courseDtoMap.get(courseCode);
@@ -282,6 +288,12 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                     if (Objects.isNull(courseName) || courseName.length() > 30) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]不符合输入规范"));
                     }
+                    if ((Objects.nonNull(name) && !Objects.equals(name.trim(), "")) && (Objects.isNull(code) || Objects.equals(code.trim(), ""))) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[工号]不能为空"));
+                    }
+                    if ((Objects.nonNull(code) && !Objects.equals(code.trim(), "")) && (Objects.isNull(name) || Objects.equals(name.trim(), ""))) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[姓名]不能为空"));
+                    }
                 }
                 // 删除重复的(需要累加的)excel数据
                 basicCourseImportDtoList.removeAll(duplicateData);
@@ -291,12 +303,12 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
             }
             return finalExcelList;
         });
-        this.executeBasicCourseImportLogic(finalList);
+        return this.executeBasicCourseImportLogic(finalList);
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList) {
+    public List<BasicCourseParams> executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Long schoolId = sysUser.getSchoolId();
         List<BasicCourseParams> addBasicCourseParamsList = new ArrayList<>();
@@ -322,7 +334,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                     throw ExceptionResultEnum.ERROR.exception("输入的开课部门【" + teachingRoomName + "】不存在");
                 }
                 Long teachingRoomId = sysOrg.getId();
-                LinkedHashSet<Long> clazzIdSet = new LinkedHashSet<>();
+                LinkedHashSet<Long> clazzIdSet = new LinkedHashSet<>(), teachIdSet = new LinkedHashSet<>();
                 if (SystemConstant.strNotNull(clazz)) {
                     String[] clazzList = clazz.split(SystemConstant.COMMA);
                     for (String clzName : clazzList) {
@@ -336,12 +348,40 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                         clazzIdSet.add(basicClazz.getId());
                     }
                 }
+                if (SystemConstant.strNotNull(basicCourseImportDto.getName())) {
+                    String[] nameList = basicCourseImportDto.getName().split(SystemConstant.COMMA);
+                    String[] codeList = null;
+                    if (SystemConstant.strNotNull(basicCourseImportDto.getCode())) {
+                        codeList = basicCourseImportDto.getCode().split(SystemConstant.COMMA);
+                    }
+                    if (Objects.nonNull(codeList) && codeList.length != nameList.length) {
+                        throw ExceptionResultEnum.ERROR.exception("姓名和工号长度不匹配");
+                    }
+                    for (int k = 0; k < nameList.length; k++) {
+                        String name = nameList[k];
+                        String code = codeList[k];
+                        SysUser sysUserDb = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
+                                .eq(SysUser::getEnable, true)
+                                .eq(SysUser::getSchoolId, schoolId)
+                                .eq(SysUser::getRealName, name)
+                                .eq(SysUser::getCode, code));
+                        Optional.ofNullable(sysUserDb).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("【姓名】" + name + ",【工号】" + code + "不存在"));
+
+                        List<SysRole> sysRoleList = sysUserRoleService.listRoleByUserId(sysUserDb.getId());
+                        sysRoleList = sysRoleList.stream().filter(s -> s.getType() == RoleTypeEnum.SCHOOL_TEACHER).collect(Collectors.toList());
+                        if (CollectionUtils.isEmpty(sysRoleList)) {
+                            throw ExceptionResultEnum.ERROR.exception("【姓名】" + name + ",【工号】" + code + "没有老师角色");
+                        }
+                        teachIdSet.add(sysUserDb.getId());
+                    }
+                }
 
                 BasicCourseParams basicCourseParams = new BasicCourseParams();
                 basicCourseParams.setCourseCode(courseCode);
                 basicCourseParams.setCourseName(courseName);
                 basicCourseParams.setTeachingRoomId(teachingRoomId);
                 basicCourseParams.setClazzIdSet(clazzIdSet);
+                basicCourseParams.setTeachIdSet(teachIdSet);
                 BasicCourse old = this.getOne(new QueryWrapper<BasicCourse>().lambda()
                         .eq(BasicCourse::getSchoolId, schoolId)
                         .eq(BasicCourse::getEnable, true)
@@ -354,6 +394,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
             List<BasicCourse> editBasicCourse = this.editEntityHelp(addBasicCourseParamsList, sysUser);
             this.saveOrUpdateBatch(editBasicCourse);
         }
+        return addBasicCourseParamsList;
     }
 
     @Override