Переглянути джерело

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

yonge 3 роки тому
батько
коміт
b63d1ab0a7
19 змінених файлів з 192 додано та 103 видалено
  1. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java
  2. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java
  3. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVisitQueryInfo.java
  5. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  6. 12 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  7. 26 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  9. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  10. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  11. 30 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  12. 16 61
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  13. 0 2
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  14. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  15. 7 2
      mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml
  16. 2 2
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  17. 0 2
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupPaymentCalenderController.java
  18. 9 5
      mec-web/src/main/java/com/ym/mec/web/controller/StudentStatisticsController.java
  19. 4 4
      mec-web/src/main/resources/exportColumnMapper.ini

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentExtracurricularExercisesSituationDao.java

@@ -184,4 +184,10 @@ public interface StudentExtracurricularExercisesSituationDao extends BaseDAO<Lon
     List<TeacherServeDto> queryTeacherPerformanceIndicator(Map<String, Object> params);
 
     void batchDelete(@Param("situationIds") List<Long> situationIds);
+
+    Date getHomeworkSituations(@Param("courseScheduleId") Long courseScheduleId,
+                                                                   @Param("musicGroupId") String musicGroupId,
+                                                                   @Param("serveType") String serveType,
+                                                                   @Param("month") Date month,
+                                                                   @Param("userId") Integer userId);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -169,7 +169,8 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
         RETAIL_GOODS("RETAIL_GOODS", "零售乐器/辅件/乐保"),
         COURSE_SCHOOL_BUY("COURSE_SCHOOL_BUY", "课程学校采买"),
         COURSE_STUDENT_BUY("COURSE_STUDENT_BUY", "课程家长采买"),
-        LARGE_MUSICAL("LARGE_MUSICAL", "大件乐器");
+        LARGE_MUSICAL("LARGE_MUSICAL", "大件乐器"),
+        OTHER("OTHER", "其他");
 
         private String code;
 

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.java

@@ -74,6 +74,36 @@ public class StudentVisit extends BaseEntity {
             return this.code;
         }
     }
+    public enum FeedbackTypeDescEnum implements BaseEnum<String,FeedbackTypeDescEnum> {
+        PRICE("PRICE","价格原因"), TIME("TIME","时间原因"),
+        TEACHING("TEACHING","教学不满意"), OTHER("OTHER","其他");
+
+        private String code;
+
+        private String msg;
+
+        FeedbackTypeDescEnum(String code, String msg) {
+            this.code = code;
+            this.msg = msg;
+        }
+
+        public void setCode(String code) {
+            this.code = code;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+
+        public void setMsg(String msg) {
+            this.msg = msg;
+        }
+
+        @Override
+        public String getCode() {
+            return this.code;
+        }
+    }
 
     private Integer id;
 
@@ -135,6 +165,12 @@ public class StudentVisit extends BaseEntity {
     private FeedbackTypeEnum feedbackType;
 
     /**
+     * 家长反馈类型
+     */
+    @ApiModelProperty(value = "家长反馈类型明细", required = true)
+    private FeedbackTypeDescEnum feedbackTypeDesc;
+
+    /**
      * 家长反馈
      */
     @ApiModelProperty(value = "家长反馈", required = true)
@@ -154,6 +190,14 @@ public class StudentVisit extends BaseEntity {
 
     private Long objectId;
 
+    public FeedbackTypeDescEnum getFeedbackTypeDesc() {
+        return feedbackTypeDesc;
+    }
+
+    public void setFeedbackTypeDesc(FeedbackTypeDescEnum feedbackTypeDesc) {
+        this.feedbackTypeDesc = feedbackTypeDesc;
+    }
+
     public FeedbackTypeEnum getFeedbackType() {
         return feedbackType;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVisitQueryInfo.java

@@ -39,6 +39,17 @@ public class StudentVisitQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "家长回访类型(\"THINKING\", \"考虑中\"),(\"PENDING_PAYMENT\", \"确认缴费待缴费\"),(\"LOST\", \"流失\"),(\"PAUSE\", \"暂停\"),(\"OTHER\", \"其他\")", required = false)
     private String feedbackType;
 
+    @ApiModelProperty(value = "PRICE(\"价格原因\"), TIME(\"时间原因\"),TEACHING(\"教学不满意\"), OTHER(\"其他\");", required = false)
+    private String feedbackTypeDesc;
+
+    public String getFeedbackTypeDesc() {
+        return feedbackTypeDesc;
+    }
+
+    public void setFeedbackTypeDesc(String feedbackTypeDesc) {
+        this.feedbackTypeDesc = feedbackTypeDesc;
+    }
+
     public String getFeedbackType() {
         return feedbackType;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -589,6 +589,16 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
 
     CourseScheduleStatistics getMusicGroupCourseScheduleStatistics(queryMusicGroupCourseScheduleQueryInfo queryInfo);
 
+    /**
+     * 根据班级编号冻结所选班级
+     *
+     * @param classGroupIds
+     * @param lockFlag
+     * @return
+     * @author zouxuan
+     */
+    int batchUpdateLockByClassGroupIds(List<Integer> classGroupIds,int lockFlag);
+
     //修改班级基本信息
     int updateClassGroup(ClassGroup classGroup);
 }

+ 12 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -3413,6 +3413,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public int batchUpdateLockByClassGroupIds(List<Integer> classGroupIds, int lockFlag) {
+        return classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds,lockFlag);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public int updateClassGroup(ClassGroup classGroup) {
         ClassGroup group = classGroupDao.get(classGroup.getId());
         if(Objects.isNull(group)){
@@ -4660,13 +4666,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         } else {
             paymentCalenderDto.setStatus(NO);
         }
-
-        //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
-        Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect = calenderStudentDetails.stream().collect(Collectors.groupingBy(e -> e.getUserId()));
-        for (Map<Integer, String> classGroupStudent : classGroupStudents) {
-            Integer classGroupId = classGroupStudent.keySet().iterator().next();
-            studentRegistrationService.insertStudent(classGroupStudent.get(classGroupId), musicGroupDao.findByClassGroupId(classGroupId).getId(), musicGroup.getId(), collect);
-        }
         paymentCalenderDto.setPayUserType(MusicGroupPaymentCalender.PayUserType.STUDENT);
         paymentCalenderDto.setPaymentType(SPAN_GROUP_CLASS_ADJUST);
         //生成缴费项目
@@ -4712,6 +4711,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         httpResponseResult.setStatus(true);
         //没有需要审核的缴费项目
         if (paymentCalenderDto.getStatus() != AUDITING) {
+            //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
+            Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect = calenderStudentDetails.stream().collect(Collectors.groupingBy(e -> e.getUserId()));
+            for (Map<Integer, String> classGroupStudent : classGroupStudents) {
+                Integer classGroupId = classGroupStudent.keySet().iterator().next();
+                studentRegistrationService.insertStudent(classGroupStudent.get(classGroupId), musicGroupDao.findByClassGroupId(classGroupId).getId(), musicGroup.getId(), collect);
+            }
             List<Map> classGroupStudents1 = JSON.parseArray(musicGroupStudentClassAdjust.getClassGroupStudents(), Map.class);
             spanGroupClassAdjustPass(masterClassGroupId, studentIds, courseIds, classGroupStudents1, allLockCourseIds, paymentCalenderDto.getBatchNo(), masterTotalPrice);
             httpResponseResult.setMsg("操作成功:学员班级调整完成");

+ 26 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1827,6 +1827,9 @@ public class ExportServiceImpl implements ExportService {
                 row.setVipCourseFee(row.getActualAmount());
             }else if(row.getGroupType() == GroupType.MEMBER){
                 row.setCloudTeacherFee(row.getActualAmount());
+                if(row.getTypeDesc() == null){
+                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER);
+                }
             } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
                 //考级报名
                 if (row.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
@@ -1874,6 +1877,9 @@ public class ExportServiceImpl implements ExportService {
                         row.setSporadicType(chargeType.getMsg());
                     }
                 }
+                if(row.getTypeDesc() == null){
+                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER);
+                }
             } else if (row.getGroupType().equals(GroupType.PRACTICE)) {
                 row.setPracticeCourseFee(row.getActualAmount());
                 PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
@@ -1987,6 +1993,13 @@ public class ExportServiceImpl implements ExportService {
                         row.setPlatformFee(BigDecimal.ZERO);
                     }
                 }
+                if(row.getTypeDesc() == null){
+                    if(row.getGroupType().equals(GroupType.SUBJECT_CHANGE)){
+                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC);
+                    }else if(row.getGroupType().equals(GroupType.REPAIR)){
+                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.REPAIR);
+                    }
+                }
             }
             //如果合作单位不存在取学员的第一个乐团的合作单位,乐团主管
             if (row.getCooperationOrganName() == null) {
@@ -2379,15 +2392,6 @@ public class ExportServiceImpl implements ExportService {
 						serviceChargeMap.put(row.getOrderNo(), transferFee.add(currentFee));
 					}
 				}
-                
-                /*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())) {
-                    BigDecimal totalTransferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
-                    transferFee = totalTransferFee.multiply(row.getRouteAmount()).divide(row.getActualAmount(), 2, BigDecimal.ROUND_HALF_UP);
-                }*/
-                
             }
             row.setTransferFee(currentFee);
             row.setPlatformFee(row.getActualAmount().multiply(tenantConfig.getChargeRate()).divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP));
@@ -2578,6 +2582,9 @@ public class ExportServiceImpl implements ExportService {
                         row.setSporadicType(chargeType.getMsg());
                     }
                 }
+                if(row.getTypeDesc() == null){
+                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER);
+                }
             } else if (row.getGroupType().equals(GroupType.PRACTICE)) {
                 row.setPracticeCourseFee(row.getActualAmount());
                 PracticeCourseDto practiceGroup = practiceGroupDao.findByGroupId(Integer.parseInt(row.getMusicGroupId()));
@@ -2587,6 +2594,9 @@ public class ExportServiceImpl implements ExportService {
                 }
             } else if (row.getGroupType().equals(GroupType.MEMBER)) {
                 row.setCloudTeacherFee(row.getActualAmount());
+                if(row.getTypeDesc() == null){
+                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.OTHER);
+                }
             } else if (row.getGroupType().equals(GroupType.REPLACEMENT)) {
                 row.setMusicalFee(row.getActualAmount());
                 ReplacementInstrumentActivityStatDto info = replacementInstrumentActivityDao.getInfo(Integer.parseInt(row.getMusicGroupId()));
@@ -2622,6 +2632,13 @@ public class ExportServiceImpl implements ExportService {
                     row.setTransferFee(BigDecimal.ZERO);
                     row.setPlatformFee(BigDecimal.ZERO);
                 }
+                if(row.getTypeDesc() == null){
+                    if(row.getGroupType().equals(GroupType.SUBJECT_CHANGE)){
+                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.NEW_MUSIC);
+                    }else if(row.getGroupType().equals(GroupType.REPAIR)){
+                        row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.REPAIR);
+                    }
+                }
             }
             //如果合作单位不存在取学员的第一个乐团的合作单位和教学点
             if (row.getCooperationOrganName() == null) {

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -168,7 +168,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 			throw new BizException("作业不存在");
 		}
 		Date now=new Date();
-		if (DateUtil.daysBetween(extracurricularExercises.getCreateTime(), now)>=14){
+		if (DateUtil.daysBetween(extracurricularExercises.getCreateTime(), now) >= 7){
 			throw new BizException("该作业已超出可提交时间范围,无法提交作业。");
 		}
 		existExtra.setAttachments(extracurricularExercisesReply.getAttachments());

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java

@@ -305,7 +305,11 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 				}
 			}
 			dataList.removeAll(Collections.singleton(null));
-			dataList = dataList.stream().sorted(Comparator.comparing(TeacherHomeworkListDto::getDay).reversed()).collect(Collectors.toList());
+			int startRow = queryInfo.getPage() * queryInfo.getRows() - queryInfo.getRows();
+			dataList = dataList.stream().sorted(Comparator.comparing(TeacherHomeworkListDto::getDay).reversed()).
+					sorted(Comparator.comparing(TeacherHomeworkListDto::getStatus))
+					.skip(startRow).limit(queryInfo.getRows()).
+					collect(Collectors.toList());
 			pageInfo.setRows(dataList);
 		}
 		return pageInfo;

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -149,6 +149,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			if(musicGroupPaymentCalender.getStatus() != AUDITING){
 				if (totalPrice.doubleValue() == 0d) {
 					musicGroupPaymentCalenderDetail.setPaymentStatus(PaymentStatus.PAID_COMPLETED);
+					musicGroupPaymentCalender.setActualNum(musicGroupPaymentCalender.getActualNum() + 1);
 //					musicGroupPaymentCalenderDetail.setActualAmount(totalPrice);
 				}
 			}

+ 30 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -116,6 +116,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     private StudentDao studentDao;
     @Autowired
     private ActivityUserMapperService activityUserMapperService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -1003,14 +1005,21 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 //                    autoClassGroupAdjust(musicGroupStudentClassAdjust);
 //                }
             } else if (calender.getPaymentType() == SPAN_GROUP_CLASS_ADJUST) {
-                //删除和解冻班级,课程信息
+                List<MusicGroupPaymentCalenderStudentDetail> calenderStudentDetails = musicGroupPaymentCalenderStudentDetailDao.findByBatchNo(batchNo);
+                //将学员加入新乐团、扣除原乐团剩余课程余额、补充到现有乐团
+                Map<Integer, List<MusicGroupPaymentCalenderStudentDetail>> collect = calenderStudentDetails.stream().collect(Collectors.groupingBy(e -> e.getUserId()));
                 MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(batchNo);
                 List<Map> classGroupStudents = JSON.parseArray(adjust.getClassGroupStudents(), Map.class);
+                for (Map<Integer, String> classGroupStudent : classGroupStudents) {
+                    Integer classGroupId = classGroupStudent.keySet().iterator().next();
+                    studentRegistrationService.insertStudent(classGroupStudent.get(classGroupId), musicGroupDao.findByClassGroupId(classGroupId).getId(), musicGroup.getId(), collect);
+                }
+                //删除和解冻班级,课程信息
                 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);
                 //如果是跨团班级合并,添加学员
-                musicGroupPaymentCalenderDetailService.batchAdd(calender, musicGroupPaymentCalenderStudentDetailDao.findByBatchNo(batchNo));
+                musicGroupPaymentCalenderDetailService.batchAdd(calender, calenderStudentDetails);
                 classGroupService.spanGroupClassAdjustPass(adjust.getMasterClassGroupId()
                         , studentIds, courseIds, classGroupStudents, allLockCourseIds, batchNo, adjust.getMasterTotalPrice());
             }
@@ -1091,7 +1100,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         Date date = new Date();
         calenders.forEach(e -> {
-            if (e.getPaymentType() == ADD_STUDENT || e.getPaymentType() == SPAN_GROUP_CLASS_ADJUST) {
+            if (e.getPaymentType() == ADD_STUDENT) {
                 throw new BizException("{} 的缴费项目不允许撤回", e.getStatus().getDesc());
             }
             if (e.getStatus() != AUDITING) {
@@ -1287,9 +1296,24 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         if (musicGroupPaymentCalenderDetailList != null && musicGroupPaymentCalenderDetailList.size() > 0) {
             throw new BizException("操作失败:缴费项目中已存在学员");
         }
-        MusicGroupStudentClassAdjust byBatchNo = musicGroupStudentClassAdjustDao.findByBatchNo(calender.getBatchNo());
-        if (byBatchNo != null) {
-            throw new BizException("操作失败:班级调整的缴费项目不支持");
+        MusicGroupStudentClassAdjust adjust = musicGroupStudentClassAdjustDao.findByBatchNo(calender.getBatchNo());
+        if (!Objects.isNull(adjust)) {
+//            throw new BizException("操作失败:班级调整的缴费项目不支持");
+            List<Map> classGroupStudents = JSON.parseArray(adjust.getClassGroupStudents(), Map.class);
+            //删除班级关联的学员
+            List<Integer> classGroupIds = new ArrayList<>();
+            if (classGroupStudents != null && classGroupStudents.size() > 0) {
+                for (Map<Integer, String> classGroupStudent : classGroupStudents) {
+                    classGroupIds.addAll(classGroupStudent.keySet());
+                }
+            }
+            List<Long> allLockCourseIds = JSON.parseArray(adjust.getAllLockCourseIds(), Long.class);
+            //解冻课程
+            courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 0,null);
+            //解冻班级
+            classGroupIds.add(adjust.getMasterClassGroupId());
+            classGroupService.batchUpdateLockByClassGroupIds(classGroupIds, 0);
+            musicGroupStudentClassAdjustDao.delete(adjust.getId());
         }
 
         if (calender.getPaymentType() == PaymentType.MUSIC_APPLY) {

+ 16 - 61
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -16,6 +16,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -24,21 +26,6 @@ import org.springframework.util.CollectionUtils;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.CourseHomeworkDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleReviewDao;
-import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.PracticeGroupDao;
-import com.ym.mec.biz.dal.dao.StudentCourseHomeworkDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dao.VipGroupDao;
 import com.ym.mec.biz.dal.dto.CourseHomeworkDto;
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.EduHomeworkCardDto;
@@ -47,21 +34,7 @@ import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
 import com.ym.mec.biz.dal.dto.StudentHomeworkRecordDto;
 import com.ym.mec.biz.dal.dto.StudentVisitCourseHomeWorkDto;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.CourseHomework;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.entity.CourseScheduleReview;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupTrainPlan;
-import com.ym.mec.biz.dal.entity.MusicGroupTrainPlanSaveDto;
-import com.ym.mec.biz.dal.entity.PracticeGroup;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentCourseHomework;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SysMusicScore;
-import com.ym.mec.biz.dal.entity.VipGroup;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
@@ -129,6 +102,8 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     private SysMusicScoreDao sysMusicScoreDao;
     @Autowired
 	private MusicGroupTrainPlanService musicGroupTrainPlanService;
+    @Autowired
+	private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
 
     @Override
     public BaseDAO<Long, StudentCourseHomework> getDAO() {
@@ -165,50 +140,31 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             throw new BizException("作业不存在");
         }
         Date now = new Date();
-        if (DateUtil.daysBetween(existHomework.getCreateTime(), now) >= 14) {
+
+        if (DateUtil.daysBetween(existHomework.getCreateTime(), now) >= 7) {
             throw new BizException("该作业已超出可提交时间范围,无法提交作业。");
         }
-
-//        boolean push = Objects.isNull(existHomework.getAttachments());
+        CourseSchedule courseSchedule = courseScheduleDao.get(existHomework.getCourseScheduleId());
+        //若本周有当前课程所在乐团的服务指标,那么在课程开始当天之后不能再提交作业
+        Date classDate = studentExtracurricularExercisesSituationDao.getHomeworkSituations(courseSchedule.getId(),courseSchedule.getMusicGroupId(),"HOMEWORK",
+                        DateUtil.getWeekMondayWithDate(now),existHomework.getUserId());
+        if(Objects.nonNull(classDate)){
+            int i = classDate.compareTo(DateUtil.stringToDate(DateUtil.format(now, DateUtil.ISO_EXPANDED_DATE_FORMAT), DateUtil.ISO_EXPANDED_DATE_FORMAT));
+            if(i <= 0){
+                throw new BizException("已超过提交作业期限。");
+            }
+        }
         boolean push = true;
         bean.setSubmitTime(now);
         super.update(bean);
         bean = studentCourseHomeworkDao.get(bean.getId());
-        CourseSchedule courseSchedule = courseScheduleDao.get(bean.getCourseScheduleId());
 
         CourseHomework courseHomework = courseHomeworkDao.get(bean.getCourseHomeworkId());
         courseHomework.setGroupType(courseSchedule.getGroupType());
         courseHomework.setCompletedNum(studentCourseHomeworkDao.countCompletedStudentNum(bean.getCourseHomeworkId()));
         courseHomeworkService.update(courseHomework);
-
-//        LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
-//        LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-//        LocalDate createDateTime = LocalDateTime.ofInstant(courseSchedule.getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
-//        LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-//        LocalDate homeworkCreateDateTime = LocalDateTime.ofInstant(existHomework.getCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
-//        boolean isOk = false;
-//        switch (createDateTime.getDayOfWeek()) {
-//            case SATURDAY:
-//                if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 4) {
-//                    isOk = true;
-//                }
-//                break;
-//            case SUNDAY:
-//                if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 3) {
-//                    isOk = true;
-//                }
-//                break;
-//            default:
-//                if (createDateTime.get(DateUtil.weekFields.weekOfYear()) == homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())) {
-//                    isOk = true;
-//                }
-//                break;
-//        }
-
         studentServeService.updateExercisesSituation(courseSchedule.getClassDate(), new ArrayList<>(Arrays.asList(bean.getUserId())), courseSchedule.getTeacherId());
 
-//        CourseHomework temp = courseHomeworkService.get(courseHomework.getId());
-//        if (temp.getExpectNum().equals(courseHomework.getCompletedNum())) {
         Integer userId = bean.getUserId();
         if (courseSchedule.getType().equals(CourseScheduleType.VIP)) {
             userId = null;
@@ -219,7 +175,6 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             review.setHandHomework(YesOrNoEnum.YES.getCode());
             courseScheduleReviewDao.update(review);
         }
-//        }
 
         if (push) {
             Map<Integer, String> userMap = new HashMap<>();

+ 0 - 2
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml

@@ -289,8 +289,6 @@
 				AND DATE_FORMAT(ch.create_time_,'%Y-%m')=DATE_FORMAT(#{createTime}, '%Y-%m')
 			</if>
 		</where>) h
-		ORDER BY h.create_time_ DESC
-		<include refid="global.limit"/>
 	</select>
 	<select id="findByIdList" resultMap="com.ym.mec.biz.dal.dao.CourseHomeworkDao.teacherHomeworkListDto">
 		SELECT id_ homework_id_,title_,content_,completed_num_,expect_num_,music_score_id_,

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -799,4 +799,10 @@
 		ORDER BY sees.teacher_id_
 		<include refid="global.limit"></include>
 	</select>
+	<select id="getHomeworkSituations" resultType="java.util.Date">
+		SELECT cs.class_date_ FROM student_extracurricular_exercises_situation_ sees
+		LEFT JOIN course_schedule cs ON FIND_IN_SET(cs.id_,sees.course_ids_)
+		WHERE sees.serve_type_ = #{serveType} AND cs.id_ != #{courseScheduleId} AND cs.music_group_id_ = #{musicGroupId}
+		AND sees.monday_ = #{month} AND sees.student_id_ = #{userId}
+	</select>
 </mapper>

+ 7 - 2
mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml

@@ -21,11 +21,12 @@
         <result column="object_id_" property="objectId"/>
         <result column="tenant_id_" property="tenantId"/>
         <result column="feedback_type_" property="feedbackType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="feedback_type_desc_" property="feedbackTypeDesc" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
         id_, music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_, type_, purpose_, overview_, feedback_,
-        visit_time_, create_time_,tenant_id_,feedback_type_
+        visit_time_, create_time_,tenant_id_,feedback_type_,feedback_type_desc_
     </sql>
     <select id="get" parameterType="java.lang.Integer" resultMap="StudentVisit">
         select
@@ -41,12 +42,13 @@
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.StudentVisit"
             useGeneratedKeys="true">
         <!--@mbg.generated-->
-        insert into student_visit (music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_, feedback_type_,
+        insert into student_visit (music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_, feedback_type_,feedback_type_desc_,
         type_, purpose_, overview_,
         feedback_, visit_time_, create_time_,object_id_,tenant_id_)
         values (#{musicGroupId,jdbcType=VARCHAR}, #{organId,jdbcType=INTEGER}, #{studentId,jdbcType=INTEGER},
         #{teacherId,jdbcType=INTEGER},#{visiterType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{feedbackType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                #{feedbackTypeDesc,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{type,jdbcType=VARCHAR}, #{purpose,jdbcType=VARCHAR}, #{overview,jdbcType=VARCHAR},
         #{feedback,jdbcType=VARCHAR}, #{visitTime}, #{createTime},#{objectId},#{tenantId})
     </insert>
@@ -133,6 +135,9 @@
             <if test="feedbackType != null and feedbackType != ''">
                 AND sv.feedback_type_ = #{feedbackType}
             </if>
+            <if test="feedbackTypeDesc != null and feedbackTypeDesc != ''">
+                AND sv.feedback_type_desc_ = #{feedbackTypeDesc}
+            </if>
             <if test="purpose != null">
                 AND sv.purpose_ = #{purpose}
             </if>

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml

@@ -172,14 +172,14 @@
 	<select id="queryPage" parameterType="map" resultMap="message">
 		select m.* from sys_message m
 		<include refid="queryCondition" />
-		order by m.create_on_ desc
+		order by m.read_status_,m.create_on_ desc
 		<include refid="global.limit" />
 	</select>
 
 	<select id="queryListPage" parameterType="map" resultMap="messageDto">
 		select m.*,u.username_ from sys_message m left join sys_user u on m.user_id_ = u.id_
 		<include refid="queryCondition" />
-		order by m.create_on_ desc
+		order by m.read_status_,m.create_on_ desc
 		<include refid="global.limit" />
 	</select>
 

+ 0 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupPaymentCalenderController.java

@@ -46,8 +46,6 @@ public class MusicGroupPaymentCalenderController extends BaseController {
     private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
     @Autowired
     private MusicGroupPaymentCalenderStudentDetailDao musicGroupPaymentCalenderStudentDetailDao;
-	@Autowired
-	private MemberRankPrivilegesService memberRankPrivilegesService;
 
 
     @ApiOperation(value = "查询学员缴费详情")

+ 9 - 5
mec-web/src/main/java/com/ym/mec/web/controller/StudentStatisticsController.java

@@ -64,9 +64,12 @@ public class StudentStatisticsController extends BaseController {
     @ApiOperation(value = "小课学员管理汇总")
     @GetMapping("/studentSmallClassStatisticsSum")
     @PreAuthorize("@pcs.hasPermissions('studentStatistics/studentSmallClassStatisticsSum')")
-    @ApiImplicitParam(name = "groupType", value = "VIP、THEORY、PRACTICE", required = true, dataType = "String")
-    public HttpResponseResult<StudentStatisticsSumDto> studentSmallClassStatisticsSum(String groupType) {
-        return succeed(studentStatisticsService.studentSmallClassStatisticsSum(groupType,organizationService.getEmployeeOrgan(null)));
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "groupType", value = "VIP、THEORY、PRACTICE", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "organId", value = "分部", dataType = "String"),
+    })
+    public HttpResponseResult<StudentStatisticsSumDto> studentSmallClassStatisticsSum(String groupType,String organId) {
+        return succeed(studentStatisticsService.studentSmallClassStatisticsSum(groupType,organizationService.getEmployeeOrgan(organId)));
     }
 
     @ApiOperation(value = "小课学员管理按时间汇总")
@@ -75,10 +78,11 @@ public class StudentStatisticsController extends BaseController {
             @ApiImplicitParam(name = "groupType", value = "VIP、THEORY、PRACTICE", required = true, dataType = "String"),
             @ApiImplicitParam(name = "startDate", value = "开始时间-年月日", dataType = "String"),
             @ApiImplicitParam(name = "endDate", value = "结束时间-年月日", dataType = "String"),
+            @ApiImplicitParam(name = "organId", value = "分部", dataType = "String"),
     })
     @PreAuthorize("@pcs.hasPermissions('studentStatistics/studentSmallClassStatisticsSumForDate')")
-    public HttpResponseResult<StudentStatisticsSumForDateDto> studentSmallClassStatisticsSumForDate(String groupType, String startDate, String endDate) {
-        return succeed(studentStatisticsService.studentSmallClassStatisticsSumForDate(groupType,startDate,endDate,organizationService.getEmployeeOrgan(null)));
+    public HttpResponseResult<StudentStatisticsSumForDateDto> studentSmallClassStatisticsSumForDate(String groupType, String startDate, String endDate,String organId) {
+        return succeed(studentStatisticsService.studentSmallClassStatisticsSumForDate(groupType,startDate,endDate,organizationService.getEmployeeOrgan(organId)));
     }
 
     @ApiOperation(value = "获取指导老师列表")

+ 4 - 4
mec-web/src/main/resources/exportColumnMapper.ini

@@ -111,11 +111,11 @@ headColumns = ["用户编号", "用户名", "手机号", "课程类型", "实际
 fieldColumns = ["userId", "username", "phone", "type.msg", "name", "actualSalary", "subsidy", "settlementTime", "teacherRole.msg"]
 
 [订单列表导出1]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额", "课程家长采买","课程学校采买", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它", "汇付手续费","平台手续费", "到账时间","关联乐团ID/VIP课ID","课程形态","课程形态描述","收费乐团编号","收费乐团","零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额", "课程家长采买","课程学校采买", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它", "汇付手续费","平台手续费", "到账时间","关联乐团ID/VIP课ID","课程形态","类型","收费乐团编号","收费乐团","零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount","balancePaymentAmount","couponRemitFee","musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee","leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId","groupType.desc","typeDesc.msg","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [订单列表导出2]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态","课程形态描述","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "优惠金额","课程家长采买","课程学校采买", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费","账户充值", "零售乐器","大件乐器", "其它","平台手续费", "到账时间",    "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount",  "couponRemitFee",     "musicGroupCourseFee","courseSchoolBuyAmount", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee",     "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee","retailGoodsFee","largeMusicalFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc.msg","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [订单列表汇总导出]
@@ -171,11 +171,11 @@ headColumns = ["分部", "单位编号", "单位名称", "是否启用","乐团
 fieldColumns = ["organization.name", "id", "name", "isEnable == true ? '是':'否'", "realName", "isEnable == true ? '开启' : '未开启'"]
 
 [财务管理导出1]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","课程形态描述","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "汇付手续费", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc.msg","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [财务管理导出2]
-headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","课程形态描述","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
+headColumns = ["序号", "学生编号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "订单金额", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分配余额", "优惠金额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "乐保费用", "团练宝", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "平台手续费", "到账时间", "关联乐团ID/VIP课ID", "课程形态","类型","收费乐团编号","收费乐团", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"]
 fieldColumns = ["id", "userId", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "orderAmount" , "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance",  "couponRemitFee",     "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "maintenanceFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "platformFee", "payTime", "musicGroupId", "groupType.desc","typeDesc.msg","feeMusicGroupId","feeMusicGroupName", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"]
 
 [老师默认课酬导出]