Procházet zdrojové kódy

1、对外教师端接口

Joburgess před 5 roky
rodič
revize
66a46721f0

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -188,6 +188,21 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseScheduleDto> getTeacherCourseSchedulesWithDate(@Param("classDate") Date classDate, @Param("teacherId") Long teacherId, @Param("type") String type);
 
     /**
+     * @describe 获取指定日期的课程
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param classDate: 上课日期
+     * @param groupId:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     */
+    List<CourseScheduleDto> findCourseSchedulesWithDate(@Param("teacherId") Integer teacherId,
+                                                        @Param("classDate") Date classDate,
+                                                        @Param("groupId") String groupId,
+                                                        @Param("groupType") GroupType groupType);
+
+    /**
      * @param classDate:
      * @param teacherId:
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
@@ -299,6 +314,21 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Date> getTeacherCourseScheduleDate(@Param("teacherId") Long teacherId, @Param("month") Date month, @Param("type") String type);
 
     /**
+     * @describe 获取在指定月份有课的日期
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param month: 月份
+     * @param groupId: 课程组编号
+     * @param groupType: 课程组类型
+     * @return java.util.List<java.util.Date>
+     */
+    List<Date> findHaveClassesDatesWithMonth(@Param("teacherId") Integer teacherId,
+                                             @Param("month") Date month,
+                                             @Param("groupId") String groupId,
+                                             @Param("groupType") GroupType groupType);
+
+    /**
      * @param teacherId: 教师编号
      * @param month:     月份
      * @return java.util.List<java.util.Date>

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCourseScheduleService.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.enums.GroupType;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/10
+ **/
+public interface TeacherCourseScheduleService {
+
+    /**
+     * @describe 获取老师在指定月份有课的日期
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param month: 月份
+     * @param groupType: 课程组类型
+     * @return java.util.List<java.util.Date>
+     */
+    List<Date> findTeacherHaveClassesDates(Integer teacherId, Date month, String groupId, GroupType groupType);
+
+    /**
+     * @describe 获取老师在指定日期的课程列表
+     * @author Joburgess
+     * @date 2020/3/10
+     * @param teacherId: 教师编号
+     * @param classDate: 上课日期
+     * @param groupType: 课程组类型
+     * @return java.util.List<com.ym.mec.biz.dal.dto.CourseScheduleDto>
+     */
+    List<CourseScheduleDto> findCourseSchedulesWithDate(Integer teacherId, Date classDate, String groupId, GroupType groupType);
+
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -854,7 +854,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream()
                 .filter(cs -> cs.getType().equals(CourseSchedule.CourseScheduleType.VIP) ||
                         cs.getType().equals(CourseSchedule.CourseScheduleType.DEMO) ||
-                        cs.getType().equals(CourseSchedule.CourseScheduleType.PRACTICE))
+                        cs.getType().equals(CourseSchedule.CourseScheduleType.PRACTICE) ||
+						cs.getType().equals(CourseScheduleType.COMM))
                 .map(CourseScheduleDto::getId).collect(Collectors.toList());
 
         Map<Integer, String> subjectNameCourseMap = new HashMap<>();

+ 1 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -37,16 +37,10 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     @Autowired
     private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
     @Autowired
-    private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
-    @Autowired
     private CourseScheduleDao courseScheduleDao;
     @Autowired
-    private StudentAttendanceDao studentAttendanceDao;
-    @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
-    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-    @Autowired
     private TeacherAttendanceDao teacherAttendanceDao;
     @Autowired
     private SubjectDao subjectDao;
@@ -78,7 +72,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         if(Objects.isNull(courseCycleInfo.getCourseCreateStartTime())){
             throw new BizException("请填写课程开始时间");
         }
-        if(Objects.isNull(courseCycleInfo.getCourseTimes())){
+        if(Objects.isNull(courseCycleInfo.getCourseCount())){
             throw new BizException("请填写课程数量");
         }
 

+ 119 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseScheduleServiceImpl.java

@@ -0,0 +1,119 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.StudentNameAndPhoneDto;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.TeacherCourseScheduleService;
+import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/10
+ */
+@Service
+public class TeacherCourseScheduleServiceImpl implements TeacherCourseScheduleService {
+
+    @Autowired
+    private CourseScheduleDao courseScheduleDao;
+    @Autowired
+    private SubjectDao subjectDao;
+    @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+    @Autowired
+    private SysConfigService sysConfigService;
+
+    @Override
+    public List<Date> findTeacherHaveClassesDates(Integer teacherId, Date month, String groupId, GroupType type) {
+        return courseScheduleDao.findHaveClassesDatesWithMonth(teacherId,month,groupId,type);
+    }
+
+    @Override
+    public List<CourseScheduleDto> findCourseSchedulesWithDate(Integer teacherId, Date classDate, String groupId, GroupType groupType) {
+        Date now = new Date();
+        if(Objects.isNull(classDate)){
+            classDate=now;
+        }
+        List<CourseScheduleDto> teacherCourseSchedulesWithDate = courseScheduleDao.findCourseSchedulesWithDate(teacherId,classDate,groupId,groupType);
+        List<Long> allCourseScheduleIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
+        List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
+
+        Map<Integer, String> subjectNameCourseMap = new HashMap<>();
+        Map<Integer, String> subjectIdCourseMap = new HashMap<>();
+        if (!CollectionUtils.isEmpty(courseScheduleIds)) {
+            List<Map<Integer, String>> subjectNameCourseMaps = subjectDao.findSubjectNameCourseMaps(courseScheduleIds);
+            List<Map<Integer, String>> subjectIdCourseMaps = subjectDao.findClassGroupSubjectId(courseScheduleIds);
+            subjectNameCourseMap = MapUtil.convertMybatisMap(subjectNameCourseMaps);
+            subjectIdCourseMap = MapUtil.convertMybatisMap(subjectIdCourseMaps);
+        }
+        List<Map<Integer, Integer>> studentNumCourseMaps = null;
+        if (!CollectionUtils.isEmpty(allCourseScheduleIds)) {
+            studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(allCourseScheduleIds);
+        }
+        Map<Integer, Long> studentNumCourseMap = new HashMap<>();
+        if (Objects.nonNull(studentNumCourseMaps)) {
+            studentNumCourseMap = MapUtil.convertIntegerMap(studentNumCourseMaps);
+        }
+
+        if(CollectionUtils.isEmpty(teacherCourseSchedulesWithDate)){
+            return teacherCourseSchedulesWithDate;
+        }
+
+        List<Integer> classGroupIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getClassGroupId).collect(Collectors.toList());
+        List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds, ClassGroupStudentStatusEnum.NORMAL);
+        Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
+
+        SysConfig advanceLeaveHoursConfig = sysConfigService.findByParamName(SysConfigService.ADVANCE_LEAVE_HOURS);
+        Integer advanceLeaveHours=advanceLeaveHoursConfig.getParanValue(Integer.class);
+        List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
+        Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
+
+        for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+            Long studentNum = studentNumCourseMap.get(courseScheduleDto.getId());
+            if (Objects.nonNull(studentNum)) {
+                courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
+            } else {
+                courseScheduleDto.setStudentAttendanceIsFirstTime(1);
+            }
+
+            if (now.before(courseScheduleDto.getStartClassTime())) {
+                courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
+            } else if (now.after(courseScheduleDto.getEndClassTime())) {
+                courseScheduleDto.setStatus(CourseStatusEnum.OVER);
+            } else {
+                courseScheduleDto.setStatus(CourseStatusEnum.UNDERWAY);
+            }
+            if (Objects.nonNull(courseScheduleDto.getClassGroupId())) {
+                List<StudentNameAndPhoneDto> courseStudentNameAndPhone = classGroupStudentMapperDao.findCourseStudentNameAndPhone(courseScheduleDto.getId().intValue());
+                if(!CollectionUtils.isEmpty(courseStudentNameAndPhone)){
+                    List<String> studentNames = courseStudentNameAndPhone.stream().map(StudentNameAndPhoneDto::getUserName).collect(Collectors.toList());
+                    courseScheduleDto.setStudentNames(org.apache.commons.lang3.StringUtils.join(studentNames, ","));
+                    courseScheduleDto.setStudents(courseStudentNameAndPhone);
+                }
+            }
+            courseScheduleDto.setSubjectName(subjectNameCourseMap.get(courseScheduleDto.getId()));
+            courseScheduleDto.setSubjectId(subjectIdCourseMap.get(courseScheduleDto.getId()));
+            Long leaveStudentNum = courseLeaveStudentNumMap.get(courseScheduleDto.getId());
+            Long normalStudentNum = classGroupStudentNumMap.get(courseScheduleDto.getClassGroupId());
+            if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
+                courseScheduleDto.setEnableAdjustInToday(1);
+            }
+        }
+        return teacherCourseSchedulesWithDate;
+    }
+}

+ 76 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -623,6 +623,51 @@
         ORDER BY start_class_time_
     </select>
 
+    <select id="findCourseSchedulesWithDate" resultMap="courseScheduleDto">
+        SELECT
+            cs.id_ seal_class_id_,
+            cg.name_,
+            su.real_name_ teacher_name_,
+            cs.type_,
+            cs.id_,
+            cs.class_group_id_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.status_,
+            cs.teacher_id_,
+            cs.actual_teacher_id_,
+            cg.expect_student_num_,
+            cs.schoole_id_,
+            s.name_ school_name_,
+            if(ta.sign_in_status_ IS NULL,0,1) sign_in_status_,
+            if(ta.sign_out_status_ IS NULL,0,1) sign_out_status_,
+            cs.teach_mode_
+        FROM
+            course_schedule cs
+            LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
+            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            LEFT JOIN school s ON cs.schoole_id_ = s.id_
+            LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_ AND ta.teacher_id_=#{teacherId}
+        WHERE
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+        <if test="teacherId!=null">
+            AND cs.actual_teacher_id_=#{teacherId}
+        </if>
+        <if test="classDate!=null">
+            AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y-%m-%d')
+        </if>
+        <if test="groupId!=null">
+            AND cs.music_group_id_=#{groupId}
+        </if>
+        <if test="type!=null and type!=''">
+            AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        AND cg.del_flag_ = 0
+        ORDER BY start_class_time_
+    </select>
+
     <select id="getTeacherHistoryCourseSchedulesWithDate" resultMap="courseScheduleDto">
         SELECT cs.id_                                            seal_class_id_,
                cg.name_,
@@ -795,13 +840,13 @@
 
     <select id="getTeacherCourseScheduleDate" resultType="java.util.Date">
         SELECT
-        cs.class_date_
+          cs.class_date_
         FROM
-        course_schedule_teacher_salary csts
+          course_schedule_teacher_salary csts
         LEFT JOIN course_schedule cs ON csts.course_schedule_id_=cs.id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE
-        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+          (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
         AND csts.user_id_ = #{teacherId}
         AND cg.del_flag_ = 0
@@ -817,6 +862,34 @@
         GROUP BY cs.class_date_
     </select>
 
+    <select id="findHaveClassesDatesWithMonth" resultType="java.util.Date">
+        SELECT
+          cs.class_date_
+        FROM
+          course_schedule cs
+        LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+        WHERE
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+            AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
+            AND cg.del_flag_ = 0
+            <if test="teacherId!=null">
+                AND cs.actual_teacher_id_=#{teacherId}
+            </if>
+            <if test="month==null">
+                AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="month!=null">
+                AND DATE_FORMAT( #{month}, '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
+            </if>
+            <if test="groupId!=null">
+                AND cs.music_group_id_=#{groupId}
+            </if>
+            <if test="type!=null and type!=''">
+                AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            GROUP BY cs.class_date_
+    </select>
+
     <select id="getTeacherHistoryCourseScheduleDate" resultType="java.util.Date">
         SELECT
         cs.class_date_

+ 9 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseGroupController.java

@@ -2,7 +2,9 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.CourseGroupCreateDto;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.CoursesGroupService;
 import com.ym.mec.biz.service.GroupClassService;
@@ -31,6 +33,8 @@ public class CourseGroupController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private GroupClassService groupClassService;
+    @Autowired
+    private TeacherDao teacherDao;
 
     @ApiOperation(value = "创建课程组")
     @PostMapping("/createCourseGroup")
@@ -39,6 +43,11 @@ public class CourseGroupController extends BaseController {
         if(Objects.isNull(sysUser)){
             return failed(HttpStatus.FORBIDDEN,"请登录");
         }
+        Teacher teacher = teacherDao.get(sysUser.getId());
+        if(Objects.isNull(teacher)){
+            return failed("教师不存在");
+        }
+        courseGroupCreateInfo.getCoursesGroup().setOrganId(teacher.getOrganId());
         courseGroupCreateInfo.getCoursesGroup().setTeacherId(sysUser.getId());
         coursesGroupService.createCourseGroup(courseGroupCreateInfo);
         return succeed();