Explorar o código

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan %!s(int64=5) %!d(string=hai) anos
pai
achega
665be67d5a

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -475,4 +475,36 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     List<ClassGroupTeachersDto> findClassGroupByType(@Param("musicGroupId") String musicGroupId, @Param("type") ClassGroupTypeEnum type);
+
+    /**
+     * @describe 统计指定乐团或vip课的总课次
+     * @author Joburgess
+     * @date 2019/11/21
+     * @param groupIds: 乐团或vip课编号
+     * @param groupType: 类型
+     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Integer>>
+     */
+    List<Map<String,Integer>> countGroupTotalClassTimes(@Param("groupIds") List<String> groupIds,
+                                                        @Param("groupType") String groupType);
+
+    /**
+     * @describe 统计指定乐团或vip课的已上课次
+     * @author Joburgess
+     * @date 2019/11/21
+     * @param groupIds: 乐团或vip课编号
+     * @param groupType: 类型
+     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Integer>>
+     */
+    List<Map<String,Integer>> countGroupOverClassTimes(@Param("groupIds") List<String> groupIds,
+                                                        @Param("groupType") String groupType);
+
+    /**
+     * @describe 获取班级列表
+     * @author Joburgess
+     * @date 2019/11/21
+     * @param classGroupIds: 班级编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
+     */
+    List<ClassGroup> findByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds);
+
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -148,4 +148,22 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
     List<Integer> findClassGroupIdByUserAndCourseDateAndStatus(@Param("userId") Integer userId,
                                                                @Param("data")Date date,
                                                                @Param("status") String status);
+
+    /**
+     * @describe 统计班级学生人数
+     * @author Joburgess
+     * @date 2019/11/21
+     * @param classGroupIds: 班级编号列表
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    List<Map<Integer,Integer>> countClassGroupsStudentNum(@Param("classGroupIds") List<Integer> classGroupIds);
+
+    /**
+     * @describe 统计班级学生人数
+     * @author Joburgess
+     * @date 2019/11/21
+     * @param classGroupId: 班级编号
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    Integer countClassGroupStudentNum(@Param("classGroupId") Integer classGroupId);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupStudentFeeDao.java

@@ -57,7 +57,7 @@ public interface MusicGroupStudentFeeDao extends BaseDAO<Long, MusicGroupStudent
 	 * @return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
 	 * @describe 统计乐团下连续旷课超过次数的学生人数
 	 */
-	List<Map<Long,Integer>> countContinuosAbsenteeismStudentNum(@Param("musicGroupIds") List<Long> musicGroupIds);
+	List<Map<Long,Integer>> countContinuosAbsenteeismStudentNum(@Param("musicGroupIds") List<String> musicGroupIds);
 
 	/**
 	 * 根据乐团编号列表和学员编号获取学员缴费状态

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -200,7 +200,7 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
 	 * @param vipGroupIds: vip课编号列表
 	 * @return java.util.List<java.util.Map<java.lang.Long,java.lang.Integer>>
 	 */
-	List<Map<Long, Integer>> countVipGroupOverCourse(List<Long> vipGroupIds);
+	List<Map<Long, Integer>> countVipGroupOverCourse(List<String> vipGroupIds);
 
 	/**
 	 * @Author: Joburgess

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

@@ -339,6 +339,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     String endClassTime = DateUtil.getDate(classDate) + " " + highClassGroup.getEndClassTime() + ":00";
 
                     courseSchedule.setSchoolId(schoolId);
+                    courseSchedule.setMusicGroupId(highClassGroup.getMusicGroupId());
                     courseSchedule.setClassGroupId(highClassGroup.getId());
                     courseSchedule.setStatus(CourseStatusEnum.NOT_START);
                     courseSchedule.setClassDate(classDate);
@@ -414,7 +415,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 //            List<Map<Integer, String>> names = vipGroupActivityDao.queryNamesById(StringUtils.join(activityIds, ","));
 //            Map<Integer, String> nameMap = MapUtil.convertMybatisMap(names);
             //计算月度平均消耗值(已上课时 / 消耗月份)
-            List<Long> vipGroupIds = dataList.stream().map(vipGroup -> vipGroup.getVipClassId()).collect(Collectors.toList());
+            List<String> vipGroupIds = dataList.stream().map(vipGroup -> String.valueOf(vipGroup.getVipClassId())).collect(Collectors.toList());
             List<Map<Long, Integer>> vipGroupOverCourses = vipGroupDao.countVipGroupOverCourse(vipGroupIds);
             Map<Long, Integer> vipGroupOverCourseMaps = MapUtil.convertIntegerMap(vipGroupOverCourses);
             dataList.forEach(vipGroup -> {
@@ -778,13 +779,25 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<String> subjectIdsList = teacherMusicClassGroup.stream().map(teacherClassGroupDto -> teacherClassGroupDto.getSubjectIdList()).collect(Collectors.toList());
         Map<Long, String> subjectMapBySubjectIdsList = subjectService.findSubjectMapBySubjectIdsList(subjectIdsList);
 
-        List<Long> musicGroupIds = teacherMusicClassGroup.stream().map(teacherClassGroupDto -> teacherClassGroupDto.getMusicGroupId()).collect(Collectors.toList());
+        List<String> musicGroupIds = teacherMusicClassGroup.stream().map(teacherClassGroupDto -> String.valueOf(teacherClassGroupDto.getMusicGroupId())).collect(Collectors.toList());
+
+        List<Integer> classGroupIds = teacherMusicClassGroup.stream().map(teacherClassGroupDto -> teacherClassGroupDto.getClassGroupId().intValue()).collect(Collectors.toList());
+
+        //统计连续旷课的人数
         List<Map<Long, Integer>> musicGroupIdAndNumList = musicGroupStudentFeeDao.countContinuosAbsenteeismStudentNum(musicGroupIds);
         Map<Long, Integer> musicGroupIdAndNum = MapUtil.convertIntegerMap(musicGroupIdAndNumList);
 
         List<Map<Long, Integer>> vipGroupOverCourses = vipGroupDao.countVipGroupOverCourse(musicGroupIds);
         Map<Long, Integer> vipGroupOverCourseMaps = MapUtil.convertIntegerMap(vipGroupOverCourses);
 
+        List<ClassGroup> byClassGroupIds = classGroupDao.findByClassGroupIds(classGroupIds);
+        Map<Integer, ClassGroup> classGorupIdMap = byClassGroupIds.stream()
+                .collect(Collectors.toMap(ClassGroup::getId, classGroup -> classGroup));
+
+        //统计班级人数
+        List<Map<Integer, Integer>> classGroupStudentNumMaps = classGroupStudentMapperDao.countClassGroupsStudentNum(classGroupIds);
+        Map<Integer, Long> classGroupStudentNumMap = MapUtil.convertIntegerMap(classGroupStudentNumMaps);
+
         teacherMusicClassGroup.forEach(teacherClassGroupDto -> {
 
             if (teacherClassGroupDto.getType() == ClassGroupTypeEnum.VIP) {
@@ -815,6 +828,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }
 
             }
+
+            ClassGroup classGroup = classGorupIdMap.get(teacherClassGroupDto.getClassGroupId().intValue());
+
+            teacherClassGroupDto.setSurplusClassTimes(classGroup.getTotalClassTimes()-classGroup.getCurrentClassTimes());
+            Long studentNum=classGroupStudentNumMap.get(teacherClassGroupDto.getClassGroupId().intValue());
+            teacherClassGroupDto.setStudentNum(Objects.isNull(studentNum)?0:studentNum.intValue());
+
             String subjectIdList = teacherClassGroupDto.getSubjectIdList();
             if (StringUtils.isNotEmpty(subjectIdList)) {
                 if (Objects.nonNull(musicGroupIdAndNum) && Objects.nonNull(musicGroupIdAndNum.get(teacherClassGroupDto.getMusicGroupId()))) {
@@ -860,7 +880,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         TeacherClassHeadInfo teacherClassHeadInfo = new TeacherClassHeadInfo();
-        teacherClassHeadInfo.setStudentNum(classGroup.getStudentNum());
+        teacherClassHeadInfo.setStudentNum(classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId()));
         teacherClassHeadInfo.setCurrentClassTimes(classGroup.getCurrentClassTimes());
         teacherClassHeadInfo.setTotalClassTimes(classGroup.getTotalClassTimes());
         ClassGroupTeacherMapper bishopTeacher = classGroupTeacherMapperDao.findByClassGroupAndRole(classGroupId, TeachTypeEnum.BISHOP);

+ 12 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -625,15 +625,19 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			oldCourseSchedule.setClassDate(newCourseSchedule.getClassDate());
 			oldCourseSchedule.setStartClassTime(newCourseSchedule.getStartClassTime());
 			oldCourseSchedule.setEndClassTime(newCourseSchedule.getEndClassTime());
-			courseScheduleDao.update(oldCourseSchedule);
 
 			//被修改的教师编号列表,需要将预计薪水置零
 			List<Integer> beReplaceTeacherIds=new ArrayList<>();
 
 			if(oldCourseSchedule.getType()== CourseSchedule.CourseScheduleType.VIP){
-				if(Objects.isNull(oldCourseSchedule.getActualTeacherId())
-						||(!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId())
-						&&Objects.nonNull(newCourseSchedule.getActualTeacherId()))){
+				boolean oldTeacherIsNull=Objects.isNull(oldCourseSchedule.getActualTeacherId());
+				boolean newTeacherIsNull=Objects.isNull(newCourseSchedule.getActualTeacherId());
+				boolean oldSchoolIsNull=Objects.isNull(oldCourseSchedule.getSchoolId());
+				boolean newSchoolIsNull=Objects.isNull(newCourseSchedule.getSchoolId());
+				boolean teacherIsChange=oldTeacherIsNull||(!newTeacherIsNull&&!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId()));
+				boolean schoolIsChange=oldSchoolIsNull||(!newSchoolIsNull&&oldCourseSchedule.getSchoolId().equals(newCourseSchedule.getSchoolId()));
+
+				if(teacherIsChange||schoolIsChange){
 					VipGroup byCourseSchedule = vipGroupDao.findByCourseSchedule(newCourseSchedule.getId().intValue());
 					TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
 					List<CourseSchedule> courseSchedules=new ArrayList<>();
@@ -687,6 +691,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					needCreateCourseScheduleTeacherSalaryCourse.add(newCourseSchedule);
 				}
 			}
+			if(Objects.nonNull(newCourseSchedule.getSchoolId())){
+				oldCourseSchedule.setSchoolId(newCourseSchedule.getSchoolId());
+			}
+			courseScheduleDao.update(oldCourseSchedule);
 			//将被修改的教师预计薪水置零
 			if(!CollectionUtils.isEmpty(beReplaceTeacherIds)){
 				courseScheduleTeacherSalaryDao.batchUpdateTeacherExpectSalary(newCourseSchedule.getId().intValue(),beReplaceTeacherIds);

+ 7 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DemoGroupServiceImpl.java

@@ -228,6 +228,8 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 		className.append("-");
 		className.append(CourseSchedule.CourseScheduleType.DEMO.getMsg());
 		courseScheduleByDemoGroup.setName(className.toString());
+		courseScheduleByDemoGroup.setGroupType(GroupType.DEMO);
+		courseScheduleByDemoGroup.setMusicGroupId(classGroup.getMusicGroupId());
 		List<CourseSchedule> courseSchedules=new ArrayList<>();
 		courseSchedules.add(courseScheduleByDemoGroup);
 		courseScheduleService.checkNewCourseSchedules(courseSchedules,false);
@@ -235,8 +237,8 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 		CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 		courseScheduleStudentPayment.setUserId(user.getId());
-        courseScheduleStudentPayment.setGroupType(courseScheduleByDemoGroup.getGroupType());
-        courseScheduleStudentPayment.setMusicGroupId(courseScheduleByDemoGroup.getMusicGroupId());
+        courseScheduleStudentPayment.setGroupType(GroupType.DEMO);
+        courseScheduleStudentPayment.setMusicGroupId(demoGroup.getId().toString());
 		courseScheduleStudentPayment.setCourseScheduleId(courseScheduleByDemoGroup.getId());
 		courseScheduleStudentPayment.setClassGroupId(courseScheduleByDemoGroup.getClassGroupId());
 		courseScheduleStudentPayment.setExpectPrice(demoGroup.getPrice());
@@ -246,8 +248,8 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 		CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
 		courseScheduleTeacherSalary.setCourseScheduleId(courseScheduleByDemoGroup.getId());
-        courseScheduleTeacherSalary.setGroupType(courseScheduleByDemoGroup.getGroupType());
-        courseScheduleTeacherSalary.setMusicGroupId(courseScheduleByDemoGroup.getMusicGroupId());
+        courseScheduleTeacherSalary.setGroupType(GroupType.DEMO);
+        courseScheduleTeacherSalary.setMusicGroupId(demoGroup.getId().toString());
 		courseScheduleTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
 		courseScheduleTeacherSalary.setUserId(demoGroup.getUserId());
 		courseScheduleTeacherSalary.setExpectSalary(demoGroup.getPrice());
@@ -266,6 +268,7 @@ public class DemoGroupServiceImpl extends BaseServiceImpl<Long, DemoGroup>  impl
 
 		TeacherAttendance teacherAttendance=new TeacherAttendance(demoGroup.getUserId(),demoGroup.getId().toString(),classGroup.getId(),courseScheduleByDemoGroup.getId(),now);
 		teacherAttendance.setGroupType(GroupType.DEMO);
+		teacherAttendance.setMusicGroupId(demoGroup.getId().toString());
 		teacherAttendanceService.insert(teacherAttendance);
 
 		//修改课程预约状态

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

@@ -443,7 +443,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = vipGroupDao.findAllByOrgan(params);
-			List<Long> vipGroupIds = dataList.stream().map(vipGroup -> vipGroup.getId()).distinct().collect(Collectors.toList());
+			List<String> vipGroupIds = dataList.stream().map(vipGroup -> String.valueOf(vipGroup.getId())).distinct().collect(Collectors.toList());
 			List<Map<Long, Integer>> vipGroupOverCourses = vipGroupDao.countVipGroupOverCourse(vipGroupIds);
 			Map<Long,Integer> vipGroupOverCourseMaps = MapUtil.convertIntegerMap(vipGroupOverCourses);
 

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

@@ -796,5 +796,39 @@
         </if>
         AND del_flag_='0'
     </select>
+    <select id="countGroupTotalClassTimes" resultType="map">
+        SELECT
+            music_group_id_ AS 'key',
+            SUM( total_class_times_ ) AS 'value' 
+        FROM
+            class_group 
+        WHERE
+            music_group_id_ IN 
+            <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+                #{groupId}
+            </foreach>
+            AND group_type_ = #{groupType}
+        GROUP BY music_group_id_,group_type_
+    </select>
+    <select id="countGroupOverClassTimes" resultType="map">
+        SELECT
+            music_group_id_ AS 'key',
+            SUM( current_class_times_ ) AS 'value'
+        FROM
+          class_group
+        WHERE
+            music_group_id_ IN
+            <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+                #{groupId}
+            </foreach>
+            AND group_type_ = #{groupType}
+        GROUP BY music_group_id_,group_type_
+    </select>
+    <select id="findByClassGroupIds" resultMap="ClassGroup">
+      SELECT * FROM class_group where id_ IN
+      <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+          #{classGroupId}
+      </foreach>
+    </select>
 
 </mapper>

+ 27 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -187,4 +187,31 @@
             AND cs.class_date_ = DATE_FORMAT(#{data},'%Y-%m-%d')
             AND cgsm.status_=#{status}
     </select>
+    <select id="countClassGroupsStudentNum" resultType="map">
+        SELECT
+            class_group_id_ AS 'key',
+            COUNT( user_id_ ) AS 'value'
+        FROM
+            class_group_student_mapper
+        WHERE
+            class_group_id_ IN
+            <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+                #{classGroupId}
+            </foreach>
+            AND status_!='QUIT'
+        GROUP BY
+            class_group_id_
+    </select>
+
+    <select id="countClassGroupStudentNum" resultType="int">
+        SELECT
+            COUNT( user_id_ )
+        FROM
+          class_group_student_mapper
+        WHERE
+            class_group_id_ = #{classGroupId}
+            AND status_!='QUIT'
+        GROUP BY
+          class_group_id_
+    </select>
 </mapper>

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

@@ -610,6 +610,7 @@
         WHERE cs.music_group_id_=#{vipGroupId}
         AND cs.group_type_='VIP'
         AND csc.course_schedule_id_ IS NOT NULL
+        AND csc.score_&lt;=2
 
     </select>
     <select id="getVipGroupSalaryInfo" resultType="com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo">