| 
					
				 | 
			
			
				@@ -2919,6 +2919,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<ClassGroupTeachersDto> queryClassGroupPage(ClassGroupQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Boolean addImGroup(ClassGroup classGroup, List<Integer> userIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> userIdList = new ArrayList<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3527,19 +3532,39 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Object queryStudentPaymentCalenders(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ArrayList masterClassGroupId = new ArrayList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        masterClassGroupId.add(mergeClassSplitClassAffirmDto.getMasterClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Map<Integer, List<StudentPaymentCalenderDto>> queryStudentPaymentCalenders(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取主班剩余时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, Long> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(masterClassGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //获取其他班级剩余时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, Long> subMap = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(mergeClassSplitClassAffirmDto.getClassGroupIds())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Long> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(mergeClassSplitClassAffirmDto.getMasterClassGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(masterMap.size() <= 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("所选主班没有剩余课程,请重新选择"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取学员列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> userNames = MapUtil.convertMybatisMap(teacherDao.queryUsernameByIds(mergeClassSplitClassAffirmDto.getStudentIds())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> phoneMaps = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(mergeClassSplitClassAffirmDto.getStudentIds(),","))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, Integer> studentCLassMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<Integer, BigDecimal>> surplusCourseFeeMapList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<Integer, String>> classGroupStudents = mergeClassSplitClassAffirmDto.getClassGroupStudents(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Map<Integer, String> classGroupStudent : classGroupStudents) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Integer integer : classGroupStudent.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //获取学员剩余课程费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(integer,classGroupStudent.get(integer))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String[] s = classGroupStudent.get(integer).split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (String s1 : s) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    studentCLassMap.put(Integer.parseInt(s1),integer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //学员剩余课程费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, BigDecimal> surplusCourseFeeMap = MapUtil.convertIntegerMap(surplusCourseFeeMapList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取分布默认的课程类型单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicGroup musicGroup = musicGroupDao.findByClassGroupId(mergeClassSplitClassAffirmDto.getMasterClassGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, BigDecimal> unitPriceMap = MapUtil.convertIntegerMap(organizationCourseUnitPriceSettingsDao.queryMapByOrganIdAndChargeTypeId(musicGroup.getChargeTypeId(), musicGroup.getOrganId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<String> masterKeySet = masterMap.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //计算主班课程类型剩余价值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, BigDecimal> masterTotalPriceMap = new HashMap<>(masterKeySet.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //学员缴费项目列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<StudentPaymentCalenderDto> studentPaymentCalenderDtos = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (String s : masterKeySet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal unitPrice = unitPriceMap.get(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (unitPrice == null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3551,13 +3576,46 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 masterTotalPriceMap.put(s,BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //总价四舍五入取整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            masterTotalPriceMap.put(s,unitPrice.multiply(new BigDecimal(courseTime)).setScale(0, BigDecimal.ROUND_HALF_UP)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal totalPrice = unitPrice.multiply(new BigDecimal(courseTime)).setScale(0, BigDecimal.ROUND_HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            masterTotalPriceMap.put(s,totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //课程余额转移 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Integer studentId : studentCLassMap.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //学员剩余课程余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BigDecimal bigDecimal = surplusCourseFeeMap.get(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //创建学员缴费项目 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                StudentPaymentCalenderDto calenderDto = new StudentPaymentCalenderDto(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calenderDto.setClassGroupId(studentCLassMap.get(studentId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //如果剩余课程余额小于等于0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(bigDecimal.doubleValue() <= 0d){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    calenderDto.setCourseCurrentPrice(totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    calenderDto.setCourseOriginalPrice(totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //如果剩余课程余额大于等于总价值,那么补交0元 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(bigDecimal.doubleValue() >= totalPrice.doubleValue()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        calenderDto.setCourseCurrentPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        calenderDto.setCourseOriginalPrice(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        calenderDto.setCourseCurrentPrice(totalPrice.subtract(bigDecimal)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        calenderDto.setCourseOriginalPrice(totalPrice.subtract(bigDecimal)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //剩余课程余额减去主班对应课程类型总的课程价值,负数就是需要补交的金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                    bigDecimal = bigDecimal.subtract(totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    surplusCourseFeeMap.put(studentId,bigDecimal.subtract(totalPrice)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calenderDto.setCourseTime(courseTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calenderDto.setCourseType(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calenderDto.setPhone(phoneMaps.get(studentId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calenderDto.setUserId(studentId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calenderDto.setUsername(userNames.get(studentId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                studentPaymentCalenderDtos.add(calenderDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return studentPaymentCalenderDtos.stream().collect(Collectors.groupingBy(e -> e.getClassGroupId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Map<String, Long> querySubCourseTime(List<Integer> classGroupIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Map<String, Long> querySubCourseTime(Integer classGroupId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(classGroupId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |