|  | @@ -8,6 +8,7 @@ import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
	
		
			
				|  | @@ -247,12 +248,13 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 | 
	
		
			
				|  |  |          Organization organization = organizationDao.get(musicGroup.getOrganId());
 | 
	
		
			
				|  |  |          Map<Long, String> goodsNameMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsNames(paymentOrderNo));
 | 
	
		
			
				|  |  |          Map<Integer, String> usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUsernameByIds(userIds));
 | 
	
		
			
				|  |  | -        Map<Long, BigDecimal> actualAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDao.queryActualAmount(paymentOrderNo));
 | 
	
		
			
				|  |  | +        Map<Long, BigDecimal> expectAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDao.queryExpectAmount(paymentOrderNo));
 | 
	
		
			
				|  |  |          Map<Long, BigDecimal> musicalAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "MUSICAL"));
 | 
	
		
			
				|  |  |          Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "ACCESSORIES"));
 | 
	
		
			
				|  |  |          Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "COURSE"));
 | 
	
		
			
				|  |  |          Map<Long, String> purchaseTypeMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryPurchaseTypeMap(paymentOrderNo));
 | 
	
		
			
				|  |  |          Map<Integer, String> userSubjectMap = subjectDao.getRegisterSubject(musicGroupId, userIds).stream().collect(Collectors.toMap(StudentRegistration::getUserId, StudentRegistration::getSubjectName));
 | 
	
		
			
				|  |  | +        List<StudentPaymentOrderDetail> details = studentPaymentOrderDetailDao.getOrderGoodies(paymentOrderNo);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          musicalListDetailDtos.forEach(e -> {
 | 
	
		
			
				|  |  |              e.setGoodsNames(goodsNameMap.get(e.getPaymentOrderId()));
 | 
	
	
		
			
				|  | @@ -261,34 +263,51 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 | 
	
		
			
				|  |  |              e.setOrganName(organization.getName());
 | 
	
		
			
				|  |  |              e.setMusicalAmount(musicalAmountMap.get(e.getPaymentOrderId()));
 | 
	
		
			
				|  |  |              e.setAccessoriesAmount(accessoriesAmountMap.get(e.getPaymentOrderId()));
 | 
	
		
			
				|  |  | -            e.setOrderAmount(actualAmountMap.get(e.getPaymentOrderId()));
 | 
	
		
			
				|  |  | +            e.setOrderAmount(expectAmountMap.get(e.getPaymentOrderId()));
 | 
	
		
			
				|  |  |              e.setCourseAmount(courseAmountMap.get(e.getPaymentOrderId()));
 | 
	
		
			
				|  |  |              e.setSubjectName(userSubjectMap.get(e.getUserId()));
 | 
	
		
			
				|  |  |              String s = purchaseTypeMap.get(e.getPaymentOrderId());
 | 
	
		
			
				|  |  |              if (StringUtils.isNotEmpty(s)) {
 | 
	
		
			
				|  |  |                  e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getPaymentOrderId())));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            List<Goods> accessories = new ArrayList<>();
 | 
	
		
			
				|  |  | +            for (StudentPaymentOrderDetail detail : details) {
 | 
	
		
			
				|  |  | +                if (!e.getPaymentOrderId().equals(detail.getPaymentOrderId())) continue;
 | 
	
		
			
				|  |  | +                if (detail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
 | 
	
		
			
				|  |  | +                    e.setMusicalName(detail.getGoodsList().stream().map(Goods::getName).collect(Collectors.joining(",")));
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    accessories.addAll(detail.getGoodsList());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            accessories.sort(Comparator.comparing(Goods::getId));
 | 
	
		
			
				|  |  | +            e.setAccessoriesName(accessories.stream().map(Goods::getName).collect(Collectors.joining(",")));
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          List<SubjectChange> studentGoodies = subjectChangeDao.getStudentGoods(musicGroupId);
 | 
	
		
			
				|  |  |          if (studentGoodies.size() <= 0) {
 | 
	
		
			
				|  |  |              return musicalListDetailDtos;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        List<SubjectChange> margins = subjectChangeDao.getMargin(musicGroupId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          for (MusicalListDetailDto musicalListDetailDto : musicalListDetailDtos) {
 | 
	
		
			
				|  |  |              for (SubjectChange studentGoods : studentGoodies) {
 | 
	
		
			
				|  |  |                  if (!musicalListDetailDto.getUserId().equals(studentGoods.getStudentId())) continue;
 | 
	
		
			
				|  |  | -                String goodsNames = "";
 | 
	
		
			
				|  |  |                  if (studentGoods.getChangeMusicalGoods() != null) {
 | 
	
		
			
				|  |  | -                    goodsNames += studentGoods.getChangeMusicalGoods().getName();
 | 
	
		
			
				|  |  | +                    musicalListDetailDto.setMusicalName(studentGoods.getChangeMusicalGoods().getName());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  if (studentGoods.getChangeAccessoriesGoods() != null) {
 | 
	
		
			
				|  |  | -                    String accessoriesNames = studentGoods.getChangeAccessoriesGoods().stream().map(Goods::getName).collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | -                    goodsNames += StringUtils.isNotBlank(goodsNames) ? "," + accessoriesNames : accessoriesNames;
 | 
	
		
			
				|  |  | +                    List<Goods> changeAccessoriesGoods = studentGoods.getChangeAccessoriesGoods();
 | 
	
		
			
				|  |  | +                    changeAccessoriesGoods.sort(Comparator.comparing(Goods::getId));
 | 
	
		
			
				|  |  | +                    String accessoriesNames = changeAccessoriesGoods.stream().map(Goods::getName).collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | +                    musicalListDetailDto.setAccessoriesName(accessoriesNames);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                musicalListDetailDto.setGoodsNames(goodsNames);
 | 
	
		
			
				|  |  |                  musicalListDetailDto.setMusicalAmount(studentGoods.getChangeMusicalPrice());
 | 
	
		
			
				|  |  |                  musicalListDetailDto.setAccessoriesAmount(studentGoods.getChangeAccessoriesPrice());
 | 
	
		
			
				|  |  |                  musicalListDetailDto.setCourseAmount(studentGoods.getChangeCourseFee());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            for (SubjectChange margin : margins) {
 | 
	
		
			
				|  |  | +                if (!musicalListDetailDto.getUserId().equals(margin.getStudentId())) continue;
 | 
	
		
			
				|  |  | +                musicalListDetailDto.setOrderAmount(musicalListDetailDto.getOrderAmount().add(margin.getGoodsMargin()));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return musicalListDetailDtos;
 | 
	
		
			
				|  |  |      }
 |