| 
					
				 | 
			
			
				@@ -402,8 +402,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         studentPaymentOrder.setVersion(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal balance = BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sporadicPayDto.getUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (chargeInfo.getChargeType().getCode().equals(9)||chargeInfo.getChargeType().getCode().equals(13)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new BizException(chargeInfo.getChargeType().getMsg()+"不支持余额支付"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (chargeInfo.getChargeType().getCode().equals(9) || chargeInfo.getChargeType().getCode().equals(13)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException(chargeInfo.getChargeType().getMsg() + "不支持余额支付"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             SysUserCashAccount userCashAccount = sysUserCashAccountService.get(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -919,22 +919,47 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String musicGroupId = subFeeSettingDto.getMusicGroupId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //乐团状态是否正确 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MusicGroup musicGroup = musicGroupDao.get(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (musicGroup != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (subFeeSettingDto.getMusicGroupStatus() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new BizException("参数校验异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicGroup.setStatus(subFeeSettingDto.getMusicGroupStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicGroup.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicGroupDao.update(musicGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //记录日志信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "修改乐团计划声部、乐器", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //删除原有的乐团声部规划 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicGroupSubjectPlanDao.delByMusicGroupId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //删除原有的声部商品组合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            musicGroupSubjectGoodsGroupDao.delByMusicGroupId(subFeeSettingDto.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //如果是进行中,补充缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (musicGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("乐团信息不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (subFeeSettingDto.getMusicGroupStatus() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("参数校验异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //声部存在学生不容许删除声部 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<StudentRegistration> registrations = studentRegistrationDao.findClassGroupStu(musicGroupId, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, List<StudentRegistration>> regMap = registrations.stream().collect(Collectors.groupingBy(StudentRegistration::getActualSubjectId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> waringSubjectIds = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regMap.forEach((subjectId, regs) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean hasSubject = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (MusicGroupSubjectPlan musicGroupSubjectPlan : musicGroupSubjectPlans) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (musicGroupSubjectPlan.getSubjectId().equals(subjectId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hasSubject = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    musicGroupSubjectPlan.setApplyStudentNum(regs.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!hasSubject) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                waringSubjectIds.add(subjectId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (waringSubjectIds.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Subject> waringSubjects = subjectDao.findBySubjectIds(waringSubjectIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String waringSubjectStr  = waringSubjects.stream().map(Subject::getName).collect(Collectors.joining(",")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException(waringSubjectStr+"存在学生,不能删除"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicGroup.setStatus(subFeeSettingDto.getMusicGroupStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicGroup.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicGroupDao.update(musicGroup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //记录日志信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "修改乐团计划声部、乐器", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //删除原有的乐团声部规划 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicGroupSubjectPlanDao.delByMusicGroupId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //删除原有的声部商品组合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicGroupSubjectGoodsGroupDao.delByMusicGroupId(subFeeSettingDto.getMusicGroupId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //如果是进行中,补充缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //                List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //                if(musicGroupStudentFees != null && musicGroupStudentFees.size() > 0){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -942,30 +967,26 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //                    musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,nextPaymentDate,"PAID_COMPLETED"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (musicGroupSubjectPlans != null && musicGroupSubjectPlans.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicGroupSubjectPlans.forEach(e -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //修改课程费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    musicGroupStudentFeeDao.updateCourseFee(musicGroupId, e.getSubjectId(), e.getFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicGroupSubjectPlanDao.batchAdd(musicGroupSubjectPlans, musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (subFeeSettingDto.getMusicGroupSubjectGoodsGroups() != null && subFeeSettingDto.getMusicGroupSubjectGoodsGroups().size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for (MusicGroupSubjectGoodsGroup musicGroupSubjectGoodsGroup : subFeeSettingDto.getMusicGroupSubjectGoodsGroups()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (musicGroupSubjectGoodsGroup.getType().equals(GoodsType.INSTRUMENT) && (musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().isEmpty() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().equals("{}"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        throw new BizException(musicGroupSubjectGoodsGroup.getName() + " 请选择提供方式"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (musicGroupSubjectGoodsGroup.getGroupRemissionCourseFee() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        musicGroupSubjectGoodsGroup.setGroupRemissionCourseFee(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (musicGroupSubjectPlans != null && musicGroupSubjectPlans.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicGroupSubjectPlans.forEach(e -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //修改课程费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                musicGroupStudentFeeDao.updateCourseFee(musicGroupId, e.getSubjectId(), e.getFee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicGroupSubjectPlanDao.batchAdd(musicGroupSubjectPlans, musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (subFeeSettingDto.getMusicGroupSubjectGoodsGroups() != null && subFeeSettingDto.getMusicGroupSubjectGoodsGroups().size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (MusicGroupSubjectGoodsGroup musicGroupSubjectGoodsGroup : subFeeSettingDto.getMusicGroupSubjectGoodsGroups()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (musicGroupSubjectGoodsGroup.getType().equals(GoodsType.INSTRUMENT) && (musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson() == null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().isEmpty() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().equals("{}"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new BizException(musicGroupSubjectGoodsGroup.getName() + " 请选择提供方式"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (musicGroupSubjectGoodsGroup.getGroupRemissionCourseFee() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    musicGroupSubjectGoodsGroup.setGroupRemissionCourseFee(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                musicGroupSubjectGoodsGroupDao.batchInsert(subFeeSettingDto.getMusicGroupSubjectGoodsGroups(), musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("乐团信息不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            musicGroupSubjectGoodsGroupDao.batchInsert(subFeeSettingDto.getMusicGroupSubjectGoodsGroups(), musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |