Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 5 years ago
parent
commit
13deed956a

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupTeacherMapperService.java

@@ -43,4 +43,11 @@ public interface ClassGroupTeacherMapperService extends BaseService<Long, ClassG
      * @return void
      */
     void createCourseScheduleTeacherSalary(List<CourseSchedule> courseSchedules, Map<Long, CourseSchedule> oldCourseSchedules);
+
+    /**
+     * 获取班级老师
+     * @param classGroupId
+     * @return
+     */
+    List<ClassGroupTeacherMapper> getClassGroupTeachers(Integer classGroupId);
 }

+ 63 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1083,6 +1083,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
+        List<CourseSchedule> courseScheduleList = new ArrayList<>();
+
         BigDecimal expectPrice = new BigDecimal("0");
         int times = 0;
 
@@ -1101,6 +1103,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             int dayOfWeek = now.getDayOfWeek().getValue();//当前星期
             for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
+                    throw new BizException("排课循环周期错误,请核查");
+                }
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
@@ -1129,8 +1134,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
                 courseSchedule.setTeacherId(teacherId);
                 courseSchedule.setActualTeacherId(teacherId);
-
                 courseScheduleDao.insert(courseSchedule);
+                courseScheduleList.add(courseSchedule);
 
                 times++;
 
@@ -1207,9 +1212,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             now = now.plusDays(1);
         }
+
+        //检测新排课冲突
+        courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
         //老师结算表
         courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
-
         //学生结算表
         courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
         return classGroup;
@@ -1234,13 +1241,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //1、更新班级关联老师信息
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
-        //5、插入班级排课信息
+        Integer teacherId = null;
+        for (ClassGroupTeacherMapper groupTeacherMapper : classGroupTeacherMapperList) {
+            if (groupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP)) {
+                teacherId = groupTeacherMapper.getUserId();
+                break;
+            }
+        }
+
+        //2、获取班级学生
+        List<StudentRegistration> studentList = studentRegistrationService.findClassGroupStu(musicGroup.getId(), classGroup.getId());
+
+        //3、插入班级排课信息
         LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
 
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = new ArrayList<>();
-        BigDecimal expectPrice = new BigDecimal("0");
+        List<CourseSchedule> courseScheduleList = new ArrayList<>();
+
         int times = 0;
         Map<String, Integer> holidayDays = new HashMap<>();
         if (classGroup4MixDto.getHoliday()) {
@@ -1257,6 +1276,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             int dayOfWeek = now.getDayOfWeek().getValue();
             for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
+                    throw new BizException("排课循环周期错误,请核查");
+                }
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
@@ -1281,11 +1303,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 courseSchedule.setTeachMode(TeachModeEnum.OFFLINE);
                 courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
                 courseSchedule.setType(classGroup4MixDto.getCourseType());
-                courseSchedule.setName(subjectNames + "-" + CourseSchedule.CourseScheduleType.SINGLE.getMsg());
+                courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
                 courseSchedule.setGroupType(GroupType.MUSIC);
-
+                courseSchedule.setTeacherId(teacherId);
+                courseSchedule.setActualTeacherId(teacherId);
                 courseScheduleDao.insert(courseSchedule);
-
+                courseScheduleList.add(courseSchedule);
                 times++;
 
                 for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
@@ -1311,6 +1334,21 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                         classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                         baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
                     }
+                    //课堂课课酬
+                    if (musicGroup.isClassroomLessons()) {
+                        //课程时长与结算单位时长占比
+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(40), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                    }
+                    //基础技能提高课
+                    if (classGroup4MixDto.getCourseType().equals(CourseSchedule.CourseScheduleType.HIGH)) {
+                        //课程时长与结算单位时长占比
+                        classTimeDuty = new BigDecimal(classCourseDuration).divide(new BigDecimal(45), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
+                        baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher30MinSalary();
+                        if (musicGroup.getSettlementType().equals(SalarySettlementTypeEnum.GRADIENT_SALARY)) {
+                            baseSalary = classGroupTeacherMapper.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalary.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalary.getAssistantTeacher90MinSalary();
+                        }
+                    }
                     salary = baseSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                     CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
@@ -1325,18 +1363,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     courseScheduleTeacherSalary.setUpdateTime(date);
                     courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
                 }
-//                for (StudentRegistration studentRegistration : studentList) {
-//                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-//                    courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
-//                    courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
-//                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-//                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
-//                    courseScheduleStudentPayment.setExpectPrice(expectPrice);
-//                    courseScheduleStudentPayment.setCreateTime(date);
-//                    courseScheduleStudentPayment.setUpdateTime(date);
-//                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
-//                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
-//                }
+                for (StudentRegistration studentRegistration : studentList) {
+                    CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
+                    courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
+                    courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
+                    courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
+                    courseScheduleStudentPayment.setUserId(studentRegistration.getUserId());
+                    courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
+                    courseScheduleStudentPayment.setCreateTime(date);
+                    courseScheduleStudentPayment.setUpdateTime(date);
+                    courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
+                    courseScheduleStudentPaymentList.add(courseScheduleStudentPayment);
+                }
                 if (classGroup4MixDto.getCourseTimes().equals(times)) {
                     break WhileNode;
                 }
@@ -1347,6 +1385,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 break;
             }
         }
+
+        //检测新排课冲突
+        courseScheduleService.checkNewCourseSchedules(courseScheduleList, false);
+
         //老师结算表
         courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
 
@@ -1452,7 +1494,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
             int dayOfWeek = now.getDayOfWeek().getValue();
             for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
-                if(courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7){
+                if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
                     throw new BizException("排课循环周期错误,请核查");
                 }
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
@@ -1811,7 +1853,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             userIdList.add(musicGroup.getTeamTeacherId());
             userIdList.add(musicGroup.getOperatorUserId());
             userIdList.add(musicGroup.getDirectorUserId());
-            if (classGroupImGroupDto.getUserIds() != null && classGroupImGroupDto.getUserIds().size()>0) {
+            if (classGroupImGroupDto.getUserIds() != null && classGroupImGroupDto.getUserIds().size() > 0) {
                 userIdList.addAll(classGroupImGroupDto.getUserIds());
             }
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -411,4 +411,8 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
         return courseScheduleTeacherSalary;
     }
+
+    public List<ClassGroupTeacherMapper> getClassGroupTeachers(Integer classGroupId){
+        return classGroupTeacherMapperDao.findClassGroupTeachers(classGroupId.toString());
+    }
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -641,9 +641,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 }
                 studentPaymentOrder.setExpectAmount(reduce);
                 //当前学员是否以前存在过当前乐团
-                StudentRegistration registration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-                if(registration != null){
-                    studentRegistration.setId(registration.getId());
+//                StudentRegistration registration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+                if(phoneAndMusicGroupId != null){
+                    studentRegistration.setId(phoneAndMusicGroupId.getId());
                     studentRegistrationDao.update(studentRegistration);
                 }else {
                     studentRegistrationDao.insertBasic(studentRegistration);

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -534,7 +534,7 @@
 
     <sql id="queryMusicGroupCourseScheduleSql">
         <where>
-            cg.del_flag_ = 0  AND ta.teacher_id_ = cs.actual_teacher_id_ AND cg.group_type_ = 'MUSIC'
+            cg.del_flag_ = 0 AND (ta.teacher_id_ = cs.actual_teacher_id_ OR ta.id_ IS NULL) AND cg.group_type_ = 'MUSIC'
             <if test="classScheduleType != null">
                 AND cs.type_ = #{classScheduleType}
             </if>

+ 4 - 4
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -183,7 +183,7 @@
                 music_group_id_ = #{musicGroupId},
             </if>
             <if test="actualSubjectId != null">
-            actual_subject_id_ = #{actualSubjectId},
+              actual_subject_id_ = #{actualSubjectId},
             </if>
             <if test="classGroupId != null">
                 class_group_id_ = #{classGroupId},
@@ -377,7 +377,7 @@
         <result column="wechat_id_" property="wechatId"/>
     </resultMap>
     <select id="getSysUserByPhone" resultMap="FindSysUser">
-        SELECT * FROM sys_user WHERE phone_ = #{phone}
+        SELECT * FROM sys_user WHERE phone_ = #{phone} LIMIT 1
     </select>
 
     <!-- 获取班级下的学生 -->
@@ -439,10 +439,10 @@
     <insert id="insertBasic" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
         INSERT INTO student_registration
         (parents_phone_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,
-        create_time_,update_time_,parents_name_,payment_status_,actual_subject_id_,music_group_status_,temporary_course_fee_)
+        create_time_,update_time_,parents_name_,payment_status_,actual_subject_id_,music_group_status_,temporary_course_fee_,class_group_id_)
         VALUES (#{parentsPhone},#{userId},#{name},#{musicGroupId},#{currentGrade},#{currentClass},#{subjectId},
             now(),now(),#{parentsName},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subjectId},
-            #{musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{temporaryCourseFee})
+            #{musicGroupStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{temporaryCourseFee},#{classGroupId})
     </insert>
 
     <!-- 查询乐团userIdList的学生 -->

+ 10 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -268,4 +268,14 @@ public class ClassGroupController extends BaseController {
         SysUser sysUser = sysUserFeignService.queryUserById(userId);
         return succeed(sysUser.getUsername());
     }
+
+    @ApiOperation(value = "查询班级老师")
+    @GetMapping("/getClassGroupTeachers")
+    @PreAuthorize("@pcs.hasPermissions('classGroup/getClassGroupTeachers')")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classGroupId", value = "班级id", required = true, dataType = "int")
+    })
+    public HttpResponseResult getClassGroupTeachers(Integer classGroupId){
+        return succeed(classGroupTeacherMapperService.getClassGroupTeachers(classGroupId));
+    }
 }