|  | @@ -9,6 +9,7 @@ import java.text.SimpleDateFormat;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
	
		
			
				|  | @@ -21,37 +22,6 @@ import com.alibaba.fastjson.TypeReference;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUserRole;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.ChargeTypeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.ClassGroupDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CooperationOrganDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.EmployeeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.OrganizationDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SchoolDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SubjectChangeDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.SysConfigDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.TeacherDao;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.BasicUserDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.CourseFormDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
 | 
	
	
		
			
				|  | @@ -259,6 +229,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |      private MusicGroupPaymentStudentCourseDetailDao musicGroupPaymentStudentCourseDetailDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SubjectChangeDao subjectChangeDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private StudentVisitDao studentVisitDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyy-MM-dd");
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1602,19 +1574,19 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |              studentRegistration.setUpdateTime(date);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              //更新服务指标、运营指标
 | 
	
		
			
				|  |  |              int remainCourseNum = courseScheduleStudentPaymentDao.countStudentNotStartCourseNumWithCourseType(userId, null);
 | 
	
		
			
				|  |  | -            if(remainCourseNum == 0){
 | 
	
		
			
				|  |  | -            	Student student = studentDao.get(userId);
 | 
	
		
			
				|  |  | -            	if(student == null){
 | 
	
		
			
				|  |  | -            		throw new BizException("学生信息查询失败");
 | 
	
		
			
				|  |  | -            	}
 | 
	
		
			
				|  |  | -            	student.setServiceTag(0);
 | 
	
		
			
				|  |  | -            	student.setOperatingTag(0);
 | 
	
		
			
				|  |  | -            	student.setOperatingTempTag(0);
 | 
	
		
			
				|  |  | -            	student.setUpdateTime(date);
 | 
	
		
			
				|  |  | -            	studentDao.update(student);
 | 
	
		
			
				|  |  | +            if (remainCourseNum == 0) {
 | 
	
		
			
				|  |  | +                Student student = studentDao.get(userId);
 | 
	
		
			
				|  |  | +                if (student == null) {
 | 
	
		
			
				|  |  | +                    throw new BizException("学生信息查询失败");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                student.setServiceTag(0);
 | 
	
		
			
				|  |  | +                student.setOperatingTag(0);
 | 
	
		
			
				|  |  | +                student.setOperatingTempTag(0);
 | 
	
		
			
				|  |  | +                student.setUpdateTime(date);
 | 
	
		
			
				|  |  | +                studentDao.update(student);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //删除用户购买的课程记录
 | 
	
	
		
			
				|  | @@ -1625,11 +1597,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC, userId);
 | 
	
		
			
				|  |  |              BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
 | 
	
		
			
				|  |  | -            if(Objects.isNull(price)){
 | 
	
		
			
				|  |  | +            if (Objects.isNull(price)) {
 | 
	
		
			
				|  |  |                  price = new BigDecimal(0);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              subtractAmount = subtractAmount.subtract(price);
 | 
	
		
			
				|  |  | -            if(BigDecimal.ZERO.compareTo(subtractAmount)<0){
 | 
	
		
			
				|  |  | +            if (BigDecimal.ZERO.compareTo(subtractAmount) < 0) {
 | 
	
		
			
				|  |  |                  studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1637,10 +1609,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 判断乐器是否是租赁
 | 
	
		
			
				|  |  |              MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
 | 
	
		
			
				|  |  | -            if(musicGroupSubjectPlan != null){
 | 
	
		
			
				|  |  | -            	musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
 | 
	
		
			
				|  |  | -            	musicGroupSubjectPlan.setUpdateTime(date);
 | 
	
		
			
				|  |  | -            	musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
 | 
	
		
			
				|  |  | +            if (musicGroupSubjectPlan != null) {
 | 
	
		
			
				|  |  | +                musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
 | 
	
		
			
				|  |  | +                musicGroupSubjectPlan.setUpdateTime(date);
 | 
	
		
			
				|  |  | +                musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
 | 
	
	
		
			
				|  | @@ -1752,21 +1724,21 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |          studentRegistration.setUpdateTime(date);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //更新服务指标、运营指标
 | 
	
		
			
				|  |  |          int remainCourseNum = courseScheduleStudentPaymentDao.countStudentNotStartCourseNumWithCourseType(userId, null);
 | 
	
		
			
				|  |  | -        if(remainCourseNum == 0){
 | 
	
		
			
				|  |  | -        	Student student = studentDao.get(userId);
 | 
	
		
			
				|  |  | -        	if(student == null){
 | 
	
		
			
				|  |  | -        		throw new BizException("学生信息查询失败");
 | 
	
		
			
				|  |  | -        	}
 | 
	
		
			
				|  |  | -        	student.setServiceTag(0);
 | 
	
		
			
				|  |  | -        	student.setOperatingTag(0);
 | 
	
		
			
				|  |  | -        	student.setOperatingTempTag(0);
 | 
	
		
			
				|  |  | -        	student.setUpdateTime(date);
 | 
	
		
			
				|  |  | -        	studentDao.update(student);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +        if (remainCourseNum == 0) {
 | 
	
		
			
				|  |  | +            Student student = studentDao.get(userId);
 | 
	
		
			
				|  |  | +            if (student == null) {
 | 
	
		
			
				|  |  | +                throw new BizException("学生信息查询失败");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            student.setServiceTag(0);
 | 
	
		
			
				|  |  | +            student.setOperatingTag(0);
 | 
	
		
			
				|  |  | +            student.setOperatingTempTag(0);
 | 
	
		
			
				|  |  | +            student.setUpdateTime(date);
 | 
	
		
			
				|  |  | +            studentDao.update(student);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //删除用户购买的课程记录
 | 
	
		
			
				|  |  |          musicGroupPaymentStudentCourseDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 | 
	
	
		
			
				|  | @@ -1776,11 +1748,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          BigDecimal price = courseScheduleStudentPaymentDao.countFinishCoursePriceWithMusicGroup(musicGroupId, GroupType.MUSIC, userId);
 | 
	
		
			
				|  |  |          BigDecimal subtractAmount = studentRegistration.getSurplusCourseFee();
 | 
	
		
			
				|  |  | -        if(Objects.isNull(price)){
 | 
	
		
			
				|  |  | +        if (Objects.isNull(price)) {
 | 
	
		
			
				|  |  |              price = new BigDecimal(0);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          subtractAmount = subtractAmount.subtract(price);
 | 
	
		
			
				|  |  | -        if(BigDecimal.ZERO.compareTo(subtractAmount)<0){
 | 
	
		
			
				|  |  | +        if (BigDecimal.ZERO.compareTo(subtractAmount) < 0) {
 | 
	
		
			
				|  |  |              studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, subtractAmount.negate(), reason, operator.getId());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1788,10 +1760,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 判断乐器是否是租赁
 | 
	
		
			
				|  |  |          MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
 | 
	
		
			
				|  |  | -        if(musicGroupSubjectPlan != null){
 | 
	
		
			
				|  |  | -        	musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
 | 
	
		
			
				|  |  | -        	musicGroupSubjectPlan.setUpdateTime(date);
 | 
	
		
			
				|  |  | -        	musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
 | 
	
		
			
				|  |  | +        if (musicGroupSubjectPlan != null) {
 | 
	
		
			
				|  |  | +            musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
 | 
	
		
			
				|  |  | +            musicGroupSubjectPlan.setUpdateTime(date);
 | 
	
		
			
				|  |  | +            musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, SUCCESS);
 | 
	
	
		
			
				|  | @@ -1853,12 +1825,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //缴费项目预计人数减一
 | 
	
		
			
				|  |  | -        musicGroupPaymentCalenderDao.cutCalenderExpectNum(userId,musicGroupId);
 | 
	
		
			
				|  |  | +        musicGroupPaymentCalenderDao.cutCalenderExpectNum(userId, musicGroupId);
 | 
	
		
			
				|  |  |          //删除缴费项目
 | 
	
		
			
				|  |  | -        List<Long> calenderIds = musicGroupPaymentCalenderDao.findStudentNoPaymentCalender(userId,musicGroupId);
 | 
	
		
			
				|  |  | +        List<Long> calenderIds = musicGroupPaymentCalenderDao.findStudentNoPaymentCalender(userId, musicGroupId);
 | 
	
		
			
				|  |  |          //删除缴费项目详情
 | 
	
		
			
				|  |  |          musicGroupPaymentCalenderDetailDao.deleteByUserIdAndMusicGroupId(userId, musicGroupId);
 | 
	
		
			
				|  |  | -        if(calenderIds != null && calenderIds.size() > 0){
 | 
	
		
			
				|  |  | +        if (calenderIds != null && calenderIds.size() > 0) {
 | 
	
		
			
				|  |  |              musicGroupPaymentCalenderDao.delByIds(calenderIds);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return true;
 | 
	
	
		
			
				|  | @@ -2073,7 +2045,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |                  sysMessageService.batchSendMessage(MessageSender.AWSMS, MessageTypeEnum.STUDENT_SMS_MUSIC_GROUP_RENEW_SUCCESS, yimei, null, 0, "1", "",
 | 
	
		
			
				|  |  |                          studentRegistration.getParentsName(), studentPaymentOrder.getActualAmount());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            studentRegistrationService.updateUserSurplusCourseFee(userId,musicGroupId,studentPaymentOrder.getExpectAmount(),"乐团续费",userId);
 | 
	
		
			
				|  |  | +            studentRegistrationService.updateUserSurplusCourseFee(userId, musicGroupId, studentPaymentOrder.getExpectAmount(), "乐团续费", userId);
 | 
	
		
			
				|  |  |              return true;
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().doubleValue() > 0) {
 | 
	
	
		
			
				|  | @@ -2275,11 +2247,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |          if (group == null) {
 | 
	
		
			
				|  |  |              throw new BizException("乐团信息不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -		if (!(group.getStatus() == MusicGroupStatusEnum.DRAFT || group.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED
 | 
	
		
			
				|  |  | -				|| group.getStatus() == MusicGroupStatusEnum.PROGRESS)) {
 | 
	
		
			
				|  |  | -			throw new BizException("当前乐团状态不能修改基本信息");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!(group.getStatus() == MusicGroupStatusEnum.DRAFT || group.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED
 | 
	
		
			
				|  |  | +                || group.getStatus() == MusicGroupStatusEnum.PROGRESS)) {
 | 
	
		
			
				|  |  | +            throw new BizException("当前乐团状态不能修改基本信息");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          MusicGroup musicGroup = subFeeSettingDto.getMusicGroup();
 | 
	
		
			
				|  |  |          musicGroup.setStatus(group.getStatus());
 | 
	
	
		
			
				|  | @@ -2300,9 +2272,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |              MusicGroupPaymentCalender regCalender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
 | 
	
		
			
				|  |  |              if (regCalender != null) {
 | 
	
		
			
				|  |  |                  musicGroupPaymentCalenderDao.delByGroupId(musicGroupId);
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  List<Long> calenderIds = new ArrayList<Long>();
 | 
	
		
			
				|  |  | -        		calenderIds.add(regCalender.getId());
 | 
	
		
			
				|  |  | +                calenderIds.add(regCalender.getId());
 | 
	
		
			
				|  |  |                  musicGroupPaymentCalenderCourseSettingsDao.deleteByMusicGroupPaymentCalenderId(calenderIds);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2401,7 +2373,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public List<CourseScheduleTeachersDto> queryTeacherSalary(Long courseScheduleId,Integer teacherId) {
 | 
	
		
			
				|  |  | +    public List<CourseScheduleTeachersDto> queryTeacherSalary(Long courseScheduleId, Integer teacherId) {
 | 
	
		
			
				|  |  |          return courseScheduleTeacherSalaryDao.queryTeacherSalary(courseScheduleId, teacherId);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2507,6 +2479,25 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              throw new BizException("当前乐团状态不支持此操作");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        //报名未交费的学生,完成回访才能到下一步
 | 
	
		
			
				|  |  | +        boolean hasNoVisit = false;
 | 
	
		
			
				|  |  | +        StringBuilder tipsMsg = new StringBuilder();
 | 
	
		
			
				|  |  | +        List<StudentRegistration> noPaymentStudents = studentRegistrationDao.getNoPaymentStudent(musicGroupId);
 | 
	
		
			
				|  |  | +        if (noPaymentStudents.size() > 0) {
 | 
	
		
			
				|  |  | +            tipsMsg.append("以下学生未完成回访,");
 | 
	
		
			
				|  |  | +            List<Integer> studentIds = noPaymentStudents.stream().map(StudentRegistration::getUserId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            List<Integer> musicGroupVisitStudent = studentVisitDao.getMusicGroupVisitStudent(musicGroupId, studentIds);
 | 
	
		
			
				|  |  | +            for (StudentRegistration noPaymentStudent : noPaymentStudents) {
 | 
	
		
			
				|  |  | +                if (!musicGroupVisitStudent.contains(noPaymentStudent.getUserId())) {
 | 
	
		
			
				|  |  | +                    hasNoVisit = true;
 | 
	
		
			
				|  |  | +                    tipsMsg.append(noPaymentStudent.getName()).append("(").append(noPaymentStudent.getUserId()).append(")、");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (hasNoVisit) {
 | 
	
		
			
				|  |  | +            throw new BizException(tipsMsg.append("请完成回访").toString());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, event, sysUser.getId(), ""));
 | 
	
		
			
				|  |  |          musicGroup.setStatus(MusicGroupStatusEnum.PREPARE);
 | 
	
		
			
				|  |  |          musicGroupDao.update(musicGroup);
 |