|
@@ -7,8 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.qmth.distributed.print.business.bean.dto.excel.TeachCourseDto;
|
|
|
-import com.qmth.distributed.print.business.bean.dto.excel.TeachStudentImportDto;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.excel.TeacherTeamDto;
|
|
|
import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
|
|
|
+import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
|
|
|
import com.qmth.distributed.print.business.bean.result.DictionaryResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
|
|
|
import com.qmth.distributed.print.business.entity.TeachClazz;
|
|
@@ -18,12 +19,17 @@ import com.qmth.distributed.print.business.service.TeachClazzService;
|
|
|
import com.qmth.distributed.print.business.service.TeachCourseService;
|
|
|
import com.qmth.teachcloud.common.base.BaseEntity;
|
|
|
import com.qmth.teachcloud.common.bean.params.BasicCourseParams;
|
|
|
+import com.qmth.teachcloud.common.bean.params.UserSaveParams;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.BasicCourse;
|
|
|
+import com.qmth.teachcloud.common.entity.SysRole;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.RoleTypeEnum;
|
|
|
import com.qmth.teachcloud.common.service.BasicCourseService;
|
|
|
import com.qmth.teachcloud.common.service.SysOrgService;
|
|
|
+import com.qmth.teachcloud.common.service.SysRoleService;
|
|
|
+import com.qmth.teachcloud.common.service.SysUserService;
|
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -55,6 +61,10 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
|
|
|
private SysOrgService sysOrgService;
|
|
|
@Resource
|
|
|
private TeachClazzService teachClazzService;
|
|
|
+ @Resource
|
|
|
+ private SysUserService sysUserService;
|
|
|
+ @Resource
|
|
|
+ private SysRoleService sysRoleService;
|
|
|
|
|
|
@Override
|
|
|
public IPage<TeachCourseResult> teachCoursePage(String courseName, int pageNumber, int pageSize, Long userId) {
|
|
@@ -103,18 +113,6 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
|
|
|
basicCourseParams.setTeachingRoomId(requestUser.getOrgId());
|
|
|
basicCourseId = basicCourseService.saveBasicCourse(basicCourseParams, requestUser);
|
|
|
}
|
|
|
-
|
|
|
- // 唯一性检验
|
|
|
- TeachCourse checkUnique = this.getOne(new QueryWrapper<TeachCourse>()
|
|
|
- .lambda()
|
|
|
- .eq(TeachCourse::getSchoolId, schoolId)
|
|
|
- .eq(TeachCourse::getBasicCourseId, basicCourseId)
|
|
|
- .eq(TeachCourse::getUserId, userId));
|
|
|
- if (Objects.nonNull(checkUnique)) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("用户【" + requestUser.getRealName() + "】已存在课程编号为【"
|
|
|
- + basicCourse.getCode() + "】课程名称为【" + basicCourse.getName() + "】的教学课程");
|
|
|
- }
|
|
|
-
|
|
|
TeachCourse teachCourse = new TeachCourse();
|
|
|
teachCourse.setSchoolId(schoolId);
|
|
|
teachCourse.setBasicCourseId(basicCourseId);
|
|
@@ -187,7 +185,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
|
|
|
TeachCourseParams teachCourseParams = new TeachCourseParams();
|
|
|
teachCourseParams.setCourseCode(courseCode);
|
|
|
teachCourseParams.setCourseName(courseName);
|
|
|
- this.manualCreate(teachCourseParams,requestUser);
|
|
|
+ this.manualCreate(teachCourseParams, requestUser);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -218,11 +216,11 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
|
|
|
@Override
|
|
|
public void deleteTeachCourseBatch(List<Long> idList) {
|
|
|
List<Long> basicCourseIdList = this.listByIds(idList).stream().map(TeachCourse::getBasicCourseId).distinct().collect(Collectors.toList());
|
|
|
- if (CollectionUtils.isNotEmpty(basicCourseIdList)){
|
|
|
+ if (CollectionUtils.isNotEmpty(basicCourseIdList)) {
|
|
|
List<TeachClazz> teachClazzList = teachClazzService.list(new QueryWrapper<TeachClazz>()
|
|
|
.lambda()
|
|
|
.in(TeachClazz::getBasicCourseId, basicCourseIdList));
|
|
|
- if (CollectionUtils.isNotEmpty(teachClazzList)){
|
|
|
+ if (CollectionUtils.isNotEmpty(teachClazzList)) {
|
|
|
// 教学课程下有教学班不能删除
|
|
|
String msg = "";
|
|
|
List<Long> existCourseIdList = teachClazzList.stream().map(TeachClazz::getBasicCourseId).distinct().collect(Collectors.toList());
|
|
@@ -235,4 +233,130 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
|
|
|
this.removeByIds(idList);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public void manualCreateTeacher(TeacherTeamParam teacherTeamParam, SysUser requestUser) throws IllegalAccessException {
|
|
|
+ String name = teacherTeamParam.getTeacherName();
|
|
|
+ String code = teacherTeamParam.getTeacherCode();
|
|
|
+ Long basicCourseId = teacherTeamParam.getBasicCourseId();
|
|
|
+ Long requestUserId = requestUser.getId();
|
|
|
+ Long schoolId = requestUser.getSchoolId();
|
|
|
+ Long teacherId;
|
|
|
+
|
|
|
+ SysUser dbUser = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
|
|
|
+ .eq(SysUser::getSchoolId, schoolId)
|
|
|
+ .eq(SysUser::getCode, code));
|
|
|
+ if (Objects.nonNull(dbUser)) {
|
|
|
+ if (!name.equals(dbUser.getRealName())) {
|
|
|
+ // 用户名称不一致
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("工号为【" + code + "】的教师用户名称错误");
|
|
|
+ } else {
|
|
|
+ teacherId = dbUser.getId();
|
|
|
+ // 判断在该教师团队下已经存在该教师
|
|
|
+ if (this.count(new QueryWrapper<TeachCourse>()
|
|
|
+ .lambda()
|
|
|
+ .eq(TeachCourse::getSchoolId, schoolId)
|
|
|
+ .eq(TeachCourse::getBasicCourseId, basicCourseId)
|
|
|
+ .eq(TeachCourse::getUserId, teacherId)) > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("教师【" + name + "】已经在教师团队中");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 不存在用户,直接创建一个学校老师用户
|
|
|
+ SysRole schoolTeacher = sysRoleService.getOne(new QueryWrapper<SysRole>()
|
|
|
+ .lambda()
|
|
|
+ .eq(SysRole::getType, RoleTypeEnum.SCHOOL_TEACHER));
|
|
|
+ if (Objects.isNull(schoolTeacher)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("缺少学校教师角色");
|
|
|
+ }
|
|
|
+ // 创建用户
|
|
|
+ UserSaveParams userSaveParams = new UserSaveParams();
|
|
|
+ userSaveParams.setSchoolId(schoolId);
|
|
|
+ userSaveParams.setLoginName(code);
|
|
|
+ userSaveParams.setRealName(code);
|
|
|
+ userSaveParams.setPassword(SystemConstant.DEFAULT_PASSWORD);
|
|
|
+ userSaveParams.setOrgId(requestUser.getOrgId());
|
|
|
+ userSaveParams.setEnable(true);
|
|
|
+ userSaveParams.setRoleIds(new Long[]{schoolTeacher.getId()});
|
|
|
+ teacherId = sysUserService.saveUser(userSaveParams);
|
|
|
+ }
|
|
|
+ // 添加教师团队
|
|
|
+ TeachCourse teachCourse = new TeachCourse();
|
|
|
+ teachCourse.setSchoolId(schoolId);
|
|
|
+ teachCourse.setBasicCourseId(basicCourseId);
|
|
|
+ teachCourse.setUserId(teacherId);
|
|
|
+ teachCourse.setEnable(true);
|
|
|
+ teachCourse.insertInfo(requestUserId);
|
|
|
+ this.save(teachCourse);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public void selectCreateTeacher(Long basicCourseId, List<Long> userIdList, SysUser requestUser) {
|
|
|
+ Long schoolId = requestUser.getSchoolId();
|
|
|
+ Long requestUserId = requestUser.getId();
|
|
|
+ if (CollectionUtils.isNotEmpty(userIdList)) {
|
|
|
+ // 过滤userIdList
|
|
|
+ userIdList = sysUserService.listByIds(userIdList).stream()
|
|
|
+ .filter(SysUser::getEnable)
|
|
|
+ .map(BaseEntity::getId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(userIdList)) {
|
|
|
+ List<Long> alreadyCreated = this.list(new QueryWrapper<TeachCourse>().lambda()
|
|
|
+ .in(TeachCourse::getUserId, userIdList)
|
|
|
+ .eq(TeachCourse::getBasicCourseId, basicCourseId))
|
|
|
+ .stream()
|
|
|
+ .map(TeachCourse::getUserId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 去掉已经在该课程教师团队的老师
|
|
|
+ userIdList.removeAll(alreadyCreated);
|
|
|
+
|
|
|
+ // 创建教学课程
|
|
|
+ List<TeachCourse> teachCourseList = userIdList.stream().flatMap(e -> {
|
|
|
+ TeachCourse teachCourse = new TeachCourse();
|
|
|
+ teachCourse.setSchoolId(schoolId);
|
|
|
+ teachCourse.setBasicCourseId(basicCourseId);
|
|
|
+ teachCourse.setUserId(e);
|
|
|
+ teachCourse.setEnable(true);
|
|
|
+ teachCourse.insertInfo(requestUserId);
|
|
|
+ return Stream.of(teachCourse);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 新增课程
|
|
|
+ this.saveBatch(teachCourseList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public void importTeacherTeam(MultipartFile file, Long basicCourseId, SysUser requestUser) throws IOException, NoSuchFieldException, IllegalAccessException {
|
|
|
+ List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(TeacherTeamDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
|
|
|
+ if (finalExcelErrorList.size() > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(finalExcelErrorList));
|
|
|
+ }
|
|
|
+ return finalExcelList;
|
|
|
+ });
|
|
|
+
|
|
|
+ if (Objects.nonNull(finalList) && finalList.size() > 0) {
|
|
|
+ for (int i = 0; i < finalList.size(); i++) {
|
|
|
+ LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
|
|
|
+ List<Object> teacherTeamImportList = map.get(i);
|
|
|
+ for (int y = 0; y < Objects.requireNonNull(teacherTeamImportList).size(); y++) {
|
|
|
+ if (teacherTeamImportList.get(y) instanceof TeacherTeamDto) {
|
|
|
+ TeacherTeamDto teacherTeamDto = (TeacherTeamDto) teacherTeamImportList.get(y);
|
|
|
+ TeacherTeamParam teacherTeamParam = new TeacherTeamParam();
|
|
|
+ teacherTeamParam.setTeacherCode(teacherTeamDto.getCode());
|
|
|
+ teacherTeamParam.setTeacherName(teacherTeamDto.getName());
|
|
|
+ this.manualCreateTeacher(teacherTeamParam, requestUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|