瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 年之前
父節點
當前提交
3a5df6741b

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -543,6 +543,5 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param courseIds
      * @param classGroupStudents
      */
-    void spanGroupClassAdjustPass(Integer masterClassGroupId,List<Integer> studentIds,List<Long> courseIds,List<Map<String,
-            String>> classGroupStudents,List<Long> allLockCourseIds,String batchNo,BigDecimal masterTotalPrice);
+    void spanGroupClassAdjustPass(Integer masterClassGroupId,List<Integer> studentIds,List<Long> courseIds,List<Map> classGroupStudents,List<Long> allLockCourseIds,String batchNo,BigDecimal masterTotalPrice);
 }

+ 25 - 29
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2097,10 +2097,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
 
         MusicGroupStudentClassAdjust classAdjust = musicGroupStudentClassAdjustDao.get(classGroup4MixDto.getMusicGroupStudentClassAdjustId());
-        //获取默认的排课时长
-//        String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
-        JSONObject jsonObject = JSON.parseObject(classAdjust.getDefaultCourseTypeMinute());
-        long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString());
         ClassGroup classGroup = classGroup4MixDto.getClassGroup();
         if (classGroup == null) {
             //建班
@@ -2136,6 +2132,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
             //3、将老师加入关联关系
             classGroupTeacherMapperDao.classGroupTeachersInsert(classGroupTeacherMapperList);
+            Set<Integer> collect = classGroupTeacherMapperList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
+            for (Integer integer : collect) {
+                //班级老师通讯录
+                imUserFriendService.classGroupChangeTeacher(classGroup.getId(),integer);
+            }
             //创建IM群组
             addImGroup(classGroup, userIds);
         }
@@ -2148,15 +2149,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //冲突校验
             courseScheduleList = autoAdjust(classGroup4MixDto, courseScheduleList, classAdjust);
 
-            List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
-                    .map(ClassGroupTeacherMapper::getUserId)
-                    .collect(Collectors.toList());
-
-            //所有教师列表
-            List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
-            Map<Integer, Teacher> teacherMap = teachers.stream()
-                    .collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
-
             courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
 
             //计算每节课的课酬
@@ -3463,6 +3455,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 for (Map<Integer, String> classGroupStudent : classGroupStudents) {
                     Set<Integer> integers = classGroupStudent.keySet();
                     for (Integer integer : integers) {
+                        List<Integer> collect = Arrays.asList(classGroupStudent.get(integer).split(",")).stream().map(e -> Integer.parseInt(e)).collect(Collectors.toList());
+                        //学员退出群聊
+                        imGroupMemberService.quit(integer.longValue(),collect);
                         classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(integer, classGroupStudent.get(integer));
                     }
                 }
@@ -3546,9 +3541,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Override
     public Map<String, Long> findClassCourseMinuteMap(List<Integer> classGroupIds, Map<String, Long> classCourseMinuteMap) {
         Map<String, Long> resultMap = new HashMap<>();
-        //获取默认的排课时长
-//        String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
-//        JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
         //获取所选班级最大剩余课时
         Map<String, Long> map = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds));
         Set<String> courseTypes = map.keySet();
@@ -3789,7 +3781,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
         //没有需要审核的缴费项目
         if (paymentCalenderDto.getStatus() != AUDITING) {
-            List<Map<String,String>> classGroupStudents1 = (List<Map<String,String>>)JSON.parse(musicGroupStudentClassAdjust.getClassGroupStudents());
+            List<Map> classGroupStudents1 = JSON.parseArray(musicGroupStudentClassAdjust.getClassGroupStudents(),Map.class);
             spanGroupClassAdjustPass(masterClassGroupId,studentIds,courseIds,classGroupStudents1,allLockCourseIds,paymentCalenderDto.getBatchNo(),masterTotalPrice);
             return "操作成功:学员班级调整完成";
         }else {
@@ -3806,26 +3798,30 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     public void spanGroupClassAdjustPass(Integer masterClassGroupId,
                                          List<Integer> studentIds,
                                          List<Long> courseIds,
-                                         List<Map<String, String>> classGroupStudents,
+                                         List<Map> classGroupStudents,
                                          List<Long> allLockCourseIds,
                                          String batchNo,BigDecimal masterTotalPrice){
-        //将学员加进班级未开始的课程,以及班级关联、加群
-        classGroupStudentMapperService.updateClassGroupStudents1(masterClassGroupId.longValue(),studentIds,allLockCourseIds,batchNo,masterTotalPrice);
-        //删除学员课程
-        if(courseIds.size() > 0){
-            courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
-        }
         //删除班级关联的学员
         List<Integer> classGroupIds = new ArrayList<>();
         if (classGroupStudents != null && classGroupStudents.size() > 0) {
-            for (Map<String, String> classGroupStudent : classGroupStudents) {
-                Set<String> integers = classGroupStudent.keySet();
-                for (String integer : integers) {
-                    classGroupIds.add(Integer.parseInt(integer));
-                    classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(Integer.parseInt(integer), classGroupStudent.get(integer));
+            for (Map<Integer, String> classGroupStudent : classGroupStudents) {
+                Set<Integer> integers = classGroupStudent.keySet();
+                for (Integer integer : integers) {
+                    List<Integer> collect = Arrays.asList(classGroupStudent.get(integer).split(",")).stream().map(e -> Integer.parseInt(e)).collect(Collectors.toList());
+                    //学员退出群聊
+                    imGroupMemberService.quit(integer.longValue(),collect);
+                    classGroupIds.add(integer);
+                    classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(integer, classGroupStudent.get(integer));
                 }
             }
         }
+
+        //将学员加进班级未开始的课程,以及班级关联、加群
+        classGroupStudentMapperService.updateClassGroupStudents1(masterClassGroupId.longValue(),studentIds,allLockCourseIds,batchNo,masterTotalPrice);
+        //删除学员课程
+        if(courseIds.size() > 0){
+            courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
+        }
         //解冻课程
         courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds,0);
         //解冻班级

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -605,6 +605,8 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         //修改班级人数
         classGroupService.updateClassStudentNum(classGroupId.intValue(), classGroup.getStudentNum() + studentIds.size());
 
+        //班级加学员
+        imUserFriendService.classGroupAddStudent(classGroupId.intValue(),studentIds);
         //添加进IM群组
         Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
         for (Integer studentId : studentIds) {

+ 8 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.service.*;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -82,11 +83,6 @@ import com.ym.mec.biz.dal.entity.OrganizationCourseUnitPriceSettings;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderDetailService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -152,6 +148,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
+	private ImGroupMemberService imGroupMemberService;
+	@Autowired
 	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 	@Autowired
 	private MusicGroupStudentClassAdjustDao musicGroupStudentClassAdjustDao;
@@ -807,7 +805,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			}else if(paymentType == SPAN_GROUP_CLASS_ADJUST){
 				//删除和解冻班级,课程信息
 				MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
-				List<Map<String,String>> classGroupStudents = (List<Map<String,String>>)JSON.parse(adjust.getClassGroupStudents());
+				List<Map> classGroupStudents = JSON.parseArray(adjust.getClassGroupStudents(),Map.class);
 				List<Integer> studentIds = JSON.parseArray(adjust.getStudentIds(), Integer.class);
 				List<Long> courseIds = JSON.parseArray(adjust.getSubLockCourseIds(), Long.class);
 				List<Long> allLockCourseIds = JSON.parseArray(adjust.getAllLockCourseIds(), Long.class);
@@ -1046,6 +1044,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			for (Map<Integer, String> classGroupStudent : maps) {
 				Set<Integer> integers = classGroupStudent.keySet();
 				for (Integer integer : integers) {
+					List<Integer> collect = Arrays.asList(classGroupStudent.get(integer).split(",")).stream().map(e -> Integer.parseInt(e)).collect(Collectors.toList());
+					//学员退出群聊
+					imGroupMemberService.quit(integer.longValue(),collect);
 					classGroupStudentMapperDao.deleteByClassGroupIdAndStudents(integer,classGroupStudent.get(integer));
 				}
 			}
@@ -1119,7 +1120,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}else if(calender.getPaymentType() == SPAN_GROUP_CLASS_ADJUST){
 			//删除和解冻班级,课程信息
 			MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
-			List<Map<String,String>> classGroupStudents = (List<Map<String,String>>)JSON.parse(adjust.getClassGroupStudents());
+			List<Map> classGroupStudents = JSON.parseArray(adjust.getClassGroupStudents(),Map.class);
 			List<Integer> studentIds = JSON.parseArray(adjust.getStudentIds(), Integer.class);
 			List<Long> courseIds = JSON.parseArray(adjust.getSubLockCourseIds(), Long.class);
 			List<Long> allLockCourseIds = JSON.parseArray(adjust.getAllLockCourseIds(), Long.class);

+ 5 - 5
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -592,11 +592,11 @@
     </select>
 
     <select id="getFeeByType" resultType="com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto">
-        SELECT MAX(spo.expect_amount_)                                expectAmount,
-               SUM(IF(g.type_ = 'INSTRUMENT', so.expect_amount_, 0))  musicalFee,
-               SUM(IF((g.type_ = 'ACCESSORIES' || g.type_ = 'TEACHING' || g.type_ = 'STAFF')  AND g.name_ !='乐器维护',IFNULL(so.expect_amount_,0), 0)) teachingFee,
-               SUM(IF((g.type_ = 'ACCESSORIES' || g.type_ = 'TEACHING' || g.type_ = 'STAFF')  AND g.name_ ='乐器维护',IFNULL(so.expect_amount_,0), 0)) repairFee,
-               SUM(IF((g.type_= 'OTHER' || g.type_ IS NULL) ,IFNULL(so.expect_amount_,0), 0)) otherFee
+        SELECT MAX(spo.actual_amount_)                                actualAmount,
+               SUM(IF(g.type_ = 'INSTRUMENT', so.actual_amount_, 0))  musicalFee,
+               SUM(IF((g.type_ = 'ACCESSORIES' || g.type_ = 'TEACHING' || g.type_ = 'STAFF')  AND g.name_ !='乐器维护',IFNULL(so.actual_amount_,0), 0)) teachingFee,
+               SUM(IF((g.type_ = 'ACCESSORIES' || g.type_ = 'TEACHING' || g.type_ = 'STAFF')  AND g.name_ ='乐器维护',IFNULL(so.actual_amount_,0), 0)) repairFee,
+               SUM(IF((g.type_= 'OTHER' || g.type_ IS NULL) ,IFNULL(so.actual_amount_,0), 0)) otherFee
         FROM student_payment_order spo
                  LEFT JOIN sell_order so ON spo.id_ = so.order_id_
                  LEFT JOIN goods g ON IF(so.parent_goods_id_ IS NOT NULL,g.id_ = so.parent_goods_id_,g.id_ = so.goods_id_)

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -746,7 +746,7 @@
         LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_
         where sr.music_group_id_ = #{musicGroupId} and sr.user_id_ = #{studentId}
     </select>
-    <select id="getStudentSubjectNameByStuIds" resultType="java.lang.String">
+    <select id="getStudentSubjectNameByStuIds" resultType="java.util.Map">
         SELECT sr.user_id_ 'key',s.name_ 'value'
         FROM student_registration sr
         LEFT JOIN subject s ON sr.actual_subject_id_ = s.id_

+ 51 - 42
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -605,7 +605,7 @@ public class ExportController extends BaseController {
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
                     "家长联系电话", "是否激活", "是否有课", "是否有网管课", "课程余额(元)", "账户余额(元)",
-                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师","是否签订协议"}, new String[]{
+                    "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态", "服务标签", "运营标签", "指导老师", "是否签订协议"}, new String[]{
                     "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
                     "isActive.msg", "hasCourse.msg", "hasPracticeCourse.msg", "courseBalance", "balance", "musicGroupName",
                     "subjectName", "musicGroupStatus", "vipGroupName", "vipGroupStatus", "serviceTag.msg", "operatingTag.msg", "teacherName", "isSignedContract"}, rows);
@@ -1027,15 +1027,15 @@ public class ExportController extends BaseController {
                 row.setMemo("");
             }
             BigDecimal transferFee = BigDecimal.ZERO;
-            if(row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")){
+            if (row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")) {
                 FeeFlagNumDto countFeeFlagNum = studentPaymentRouteOrderDao.getCountFeeFlagNum(row.getOrderNo());
-                if(countFeeFlagNum.getTotalNum() > countFeeFlagNum.getYesNum()){
-                    transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP);
+                if (countFeeFlagNum.getTotalNum() > countFeeFlagNum.getYesNum()) {
+                    transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
                 }
-                if(countFeeFlagNum.getTotalNum().equals(countFeeFlagNum.getYesNum())){
+                if (countFeeFlagNum.getTotalNum().equals(countFeeFlagNum.getYesNum())) {
                     List<StudentPaymentRouteOrder> routeOrders = studentPaymentRouteOrderDao.getRouteOrders(row.getOrderNo());
                     for (StudentPaymentRouteOrder routeOrder : routeOrders) {
-                        transferFee = transferFee.add(routeOrder.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP));
+                        transferFee = transferFee.add(routeOrder.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
                     }
                 }
             }
@@ -1054,15 +1054,18 @@ public class ExportController extends BaseController {
                         case TRAINING_SINGLE:
                         case TRAINING_MIX:
                         case MUSIC_NETWORK:
-                            row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
-                            break;
                         case HIGH:
                         case HIGH_ONLINE:
                         case HIGH_ONLINE_COURSE:
-                            row.setHighCourseFee(row.getHighCourseFee().add(orderDetail.getPrice()));
+                            row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
+                            break;
                         case MUSICAL:
                             if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-                                row.setLeaseFee(orderDetail.getPrice());
+                                BigDecimal leaseFee = orderDetail.getPrice();
+                                if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
+                                    leaseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
+                                }
+                                row.setLeaseFee(leaseFee);
                             } else {
                                 row.setMusicalFee(orderDetail.getPrice());
                             }
@@ -1103,6 +1106,9 @@ public class ExportController extends BaseController {
                             continue;
                         }
                         BigDecimal typeFee = new BigDecimal(feeTypeStr.substring(index + 1));
+                        if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
+                            typeFee = typeFee.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
+                        }
                         if (feeTypeStr.contains("VIP")) {
                             row.setVipCourseFee(typeFee);
                         } else if (feeTypeStr.contains("网管课")) {
@@ -1111,9 +1117,9 @@ public class ExportController extends BaseController {
                             row.setTheoryCourseFee(typeFee);
                         }
                     }
-                    row.setDegreeFee(row.getExpectAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee()));
+                    row.setDegreeFee(row.getActualAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee()));
                 } else {
-                    row.setOtherFee(row.getExpectAmount());
+                    row.setOtherFee(row.getActualAmount());
                 }
                 if (row.getChargeType() != null) {
                     for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
@@ -1137,9 +1143,6 @@ public class ExportController extends BaseController {
                 }
             } else {
                 StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
-//                if(feeByType.getMusicalFee().add(feeByType.getTeachingFee()).add(feeByType.getRepairFee()).add(feeByType.getOtherFee()).compareTo(BigDecimal.ZERO) <=0){
-//                    break;
-//                }
                 row.setMusicalFee(feeByType.getMusicalFee());
                 row.setTeachingFee(feeByType.getTeachingFee());
                 row.setRepairFee(feeByType.getRepairFee());
@@ -1151,20 +1154,20 @@ public class ExportController extends BaseController {
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setCooperationOrganName(studentRegistration.getRemark());
                     }
-                    row.setMusicGroupCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getHighCourseFee()));
+                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
                 } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
-                    row.setRepairFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
+                    row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
                 } else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
-                    row.setMusicGroupCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()));
+                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()));
                     row.setTransferFee(BigDecimal.ZERO);
                 }
             }
-            if(row.getMusicGroupId()==null){
+            if (row.getMusicGroupId()!= null && row.getMusicGroupId().equals("null")) {
                 row.setMusicGroupId("");
             }
             String paymentChannel = "";
-            if(row.getPaymentChannel() == null) {
-            }else if (row.getPaymentChannel().equals("YQPAY")) {
+            if (row.getPaymentChannel() == null) {
+            } else if (row.getPaymentChannel().equals("YQPAY")) {
                 paymentChannel = "双乾";
             } else if (row.getPaymentChannel().equals("ADAPAY")) {
                 paymentChannel = "汇付";
@@ -1177,9 +1180,9 @@ public class ExportController extends BaseController {
         }
 
         try {
-            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "乐团课", "网络基础训练", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
                     "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "备注"};
-            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "musicGroupCourseFee", "highCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
                     "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
@@ -2165,13 +2168,13 @@ public class ExportController extends BaseController {
                 row.setMemo("");
             }
             BigDecimal transferFee = BigDecimal.ZERO;
-            if(row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")){
+            if (row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")) {
                 FeeFlagNumDto countFeeFlagNum = studentPaymentRouteOrderDao.getCountFeeFlagNum(row.getOrderNo());
-                if(countFeeFlagNum.getTotalNum() > countFeeFlagNum.getYesNum() && row.getFeeFlag().equals("Y")){
-                    transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP);
+                if (countFeeFlagNum.getTotalNum() > countFeeFlagNum.getYesNum() && row.getFeeFlag().equals("Y")) {
+                    transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
                 }
-                if(countFeeFlagNum.getTotalNum().equals(countFeeFlagNum.getYesNum())){
-                    transferFee = row.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP);
+                if (countFeeFlagNum.getTotalNum().equals(countFeeFlagNum.getYesNum())) {
+                    transferFee = row.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
                 }
             }
             row.setTransferFee(transferFee);
@@ -2189,15 +2192,18 @@ public class ExportController extends BaseController {
                         case TRAINING_SINGLE:
                         case TRAINING_MIX:
                         case MUSIC_NETWORK:
-                            row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
-                            break;
                         case HIGH:
                         case HIGH_ONLINE:
                         case HIGH_ONLINE_COURSE:
-                            row.setHighCourseFee(row.getHighCourseFee().add(orderDetail.getPrice()));
+                            row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
+                            break;
                         case MUSICAL:
                             if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-                                row.setLeaseFee(orderDetail.getPrice());
+                                BigDecimal leaseFee = orderDetail.getPrice();
+                                if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
+                                    leaseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
+                                }
+                                row.setLeaseFee(leaseFee);
                             } else {
                                 row.setMusicalFee(orderDetail.getPrice());
                             }
@@ -2238,6 +2244,9 @@ public class ExportController extends BaseController {
                             continue;
                         }
                         BigDecimal typeFee = new BigDecimal(feeTypeStr.substring(index + 1));
+                        if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
+                            typeFee = typeFee.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
+                        }
                         if (feeTypeStr.contains("VIP")) {
                             row.setVipCourseFee(typeFee);
                         } else if (feeTypeStr.contains("网管课")) {
@@ -2246,9 +2255,9 @@ public class ExportController extends BaseController {
                             row.setTheoryCourseFee(typeFee);
                         }
                     }
-                    row.setDegreeFee(row.getExpectAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee()));
+                    row.setDegreeFee(row.getActualAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee()));
                 } else {
-                    row.setOtherFee(row.getExpectAmount());
+                    row.setOtherFee(row.getActualAmount());
                 }
                 if (row.getChargeType() != null) {
                     for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
@@ -2283,20 +2292,20 @@ public class ExportController extends BaseController {
                         row.setSchoolName(studentRegistration.getSchoolName());
                         row.setCooperationOrganName(studentRegistration.getRemark());
                     }
-                    row.setMusicGroupCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getHighCourseFee()));
+                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
                 } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
-                    row.setRepairFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
+                    row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
                 } else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
-                    row.setMusicGroupCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()));
+                    row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()));
                     row.setTransferFee(BigDecimal.ZERO);
                 }
             }
-            if(row.getMusicGroupId()==null){
+            if (row.getMusicGroupId()!= null && row.getMusicGroupId().equals("null")) {
                 row.setMusicGroupId("");
             }
             String paymentChannel = "";
-            if(row.getPaymentChannel() == null) {
-            }else if (row.getPaymentChannel().equals("YQPAY")) {
+            if (row.getPaymentChannel() == null) {
+            } else if (row.getPaymentChannel().equals("YQPAY")) {
                 paymentChannel = "双乾";
             } else if (row.getPaymentChannel().equals("ADAPAY")) {
                 paymentChannel = "汇付";
@@ -2309,9 +2318,9 @@ public class ExportController extends BaseController {
         }
 
         try {
-            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分润余额", "乐团课", "网络基础训练", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分润余额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
                     "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "备注"};
-            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "highCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
                     "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");