|  | @@ -23,12 +23,12 @@ import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.http.HttpStatus;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -import org.springframework.transaction.annotation.Isolation;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.function.Function;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
	
		
			
				|  | @@ -55,6 +55,9 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private DegreeService degreeService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SubjectService subjectService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public BaseDAO<Integer, DegreeRegistration> getDAO() {
 | 
	
		
			
				|  |  |          return degreeRegistrationDao;
 | 
	
	
		
			
				|  | @@ -81,7 +84,6 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          Date nowDate = new Date();
 | 
	
		
			
				|  |  |          String orderNo = idGeneratorService.generatorId("payment") + "";
 | 
	
		
			
				|  |  | -        degreeRegistration.setOrderNo(orderNo);
 | 
	
		
			
				|  |  |          //获取收费项价格
 | 
	
		
			
				|  |  |          BigDecimal money = BigDecimal.ZERO;
 | 
	
		
			
				|  |  |          List<DegreeRegistrationDto> registrationDtos = degreeRegistration.getDegreeRegistrationDtos();
 | 
	
	
		
			
				|  | @@ -90,28 +92,35 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 | 
	
		
			
				|  |  |              DegreeRegistration degree = new DegreeRegistration();
 | 
	
		
			
				|  |  |              BeanUtils.copyProperties(degreeRegistration,degree);
 | 
	
		
			
				|  |  |              String level = registrationDto.getLevel();
 | 
	
		
			
				|  |  | +            degree.setOrderNo(orderNo);
 | 
	
		
			
				|  |  |              degree.setLevel(level);
 | 
	
		
			
				|  |  |              degree.setDegreeId(registrationDto.getDegreeId());
 | 
	
		
			
				|  |  | -            degree.setMoney(registrationDto.getMoney());
 | 
	
		
			
				|  |  |              degree.setTheoryCert(registrationDto.getTheoryCert());
 | 
	
		
			
				|  |  |              degree.setType(registrationDto.getType());
 | 
	
		
			
				|  |  |              degree.setStatus(1);
 | 
	
		
			
				|  |  | -            DegreeLevelFeeNew one = degreeLevelFeeService.lambdaQuery()
 | 
	
		
			
				|  |  | -                    .eq(DegreeLevelFeeNew::getSubjectId, degreeRegistration.getSubjectId())
 | 
	
		
			
				|  |  | -                    .eq(DegreeLevelFeeNew::getDegreeType, degreeRegistration.getType())
 | 
	
		
			
				|  |  | -                    .eq(DegreeLevelFeeNew::getLevel, degreeRegistration.getLevel()).one();
 | 
	
		
			
				|  |  | +            DegreeLevelFeeNew one;
 | 
	
		
			
				|  |  | +            if(registrationDto.getType() == DegreeTypeEnum.THEORY){
 | 
	
		
			
				|  |  | +                one = degreeLevelFeeService.lambdaQuery()
 | 
	
		
			
				|  |  | +                        .eq(DegreeLevelFeeNew::getDegreeType, registrationDto.getType())
 | 
	
		
			
				|  |  | +                        .eq(DegreeLevelFeeNew::getLevel, registrationDto.getLevel()).one();
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                one = degreeLevelFeeService.lambdaQuery()
 | 
	
		
			
				|  |  | +                        .eq(DegreeLevelFeeNew::getSubjectId, degreeRegistration.getSubjectId())
 | 
	
		
			
				|  |  | +                        .eq(DegreeLevelFeeNew::getDegreeType, registrationDto.getType())
 | 
	
		
			
				|  |  | +                        .eq(DegreeLevelFeeNew::getLevel, registrationDto.getLevel()).one();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              if(Objects.isNull(one)){
 | 
	
		
			
				|  |  |                  throw new BizException("该级别已不可报名");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              degree.setMoney(one.getFee());
 | 
	
		
			
				|  |  | +            money = money.add(one.getFee());
 | 
	
		
			
				|  |  |              degreeRegistrationList.add(degree);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        degreeRegistrationDao.batchInsert(degreeRegistrationList);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          if(money.compareTo(degreeRegistration.getPrice())!=0){
 | 
	
		
			
				|  |  |              throw new BizException("商品价格不符");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +        degreeRegistrationDao.batchInsert(degreeRegistrationList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Integer userId = degreeRegistration.getUserId();
 | 
	
		
			
				|  |  |          String channelType = "";
 | 
	
		
			
				|  |  |          StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 | 
	
	
		
			
				|  | @@ -145,11 +154,7 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 | 
	
		
			
				|  |  |              studentPaymentOrder.setBalancePaymentAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          studentPaymentOrder.setStatus(DealStatusEnum.ING);
 | 
	
		
			
				|  |  | -        studentPaymentOrder.setClassGroupId(degreeRegistration.getId());
 | 
	
		
			
				|  |  | -        String collect = degreeRegistrationList.stream().map(e -> e.getDegreeId().toString()).collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | -        if(StringUtils.isNotEmpty(collect)){
 | 
	
		
			
				|  |  | -            studentPaymentOrder.setMusicGroupId(collect);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        studentPaymentOrder.setMusicGroupId(degreeRegistration.getDegreeId().toString());
 | 
	
		
			
				|  |  |          studentPaymentOrder.setOrganId(degreeRegistration.getOrganId());
 | 
	
		
			
				|  |  |          studentPaymentOrder.setRoutingOrganId(degreeRegistration.getOrganId());
 | 
	
		
			
				|  |  |          studentPaymentOrderService.insert(studentPaymentOrder);
 | 
	
	
		
			
				|  | @@ -262,6 +267,24 @@ public class DegreeRegistrationServiceImpl extends BaseServiceImpl<Integer, Degr
 | 
	
		
			
				|  |  |                  degreeRegistration.setVipTeacherName(vipTeacherMapper.get(degreeRegistration.getUserId()));
 | 
	
		
			
				|  |  |                  degreeRegistration.setNormalTeacherName(teacherMapper.get(degreeRegistration.getUserId()));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            // 设置声部
 | 
	
		
			
				|  |  | +            Set<Integer> subjectIdSet = dataList.stream().map(o -> o.getSubjectId()).filter(Objects::nonNull).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            List<Subject> subjectList = subjectService.findBySubjectByIdList(new ArrayList<>(subjectIdSet));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // id 分组
 | 
	
		
			
				|  |  | +            Map<Integer, Subject> subjectMap = subjectList.stream().collect(Collectors.toMap(Subject::getId, Function.identity()));
 | 
	
		
			
				|  |  | +            for (DegreeRegistration degreeRegistration : dataList) {
 | 
	
		
			
				|  |  | +                if (degreeRegistration.getSubjectId() == null) {
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                Subject subject = subjectMap.get(degreeRegistration.getSubjectId());
 | 
	
		
			
				|  |  | +                if (subject != null) {
 | 
	
		
			
				|  |  | +                    degreeRegistration.setSubjectName(subject.getName());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              DegreeRegistration degree = degreeRegistrationDao.getTotalAmount(params);
 | 
	
		
			
				|  |  |              pageInfo.setApplyNum(degreeRegistrationDao.countApplyNum(params));
 | 
	
		
			
				|  |  |              pageInfo.setTotalAmount(degree.getMoney());
 |