Browse Source

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

zouxuan 4 years ago
parent
commit
74c98a02dc
36 changed files with 332 additions and 88 deletions
  1. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  2. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesDao.java
  4. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  5. 24 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderStudentDetail.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ExtracurricularExercisesService.java
  7. 75 45
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  8. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  9. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  10. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesServiceImpl.java
  11. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java
  13. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  14. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  15. 20 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java
  16. 1 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  17. 22 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  18. 2 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  19. 11 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  20. 9 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  21. 8 4
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderStudentDetailMapper.xml
  22. 2 2
      mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml
  23. 15 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  24. 1 0
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  25. 2 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  26. 39 7
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java
  27. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/ChargeTypeController.java
  28. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/ChargeTypeSubjectMapperController.java
  29. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupOrganizationCourseSettingsController.java
  30. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationCourseDurationSettingsController.java
  31. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/OrganizationCourseUnitPriceSettingsController.java
  32. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysConfigController.java
  33. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java
  34. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java
  35. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultPracticeGroupSalaryController.java
  36. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
@@ -468,4 +469,14 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
                                                                             @Param("musicGroupId") String musicGroupId);
 
     List<Long> getLessThenThreeClassGroupIds(@Param("organIds") String organIds);
+
+    /**
+     * @describe 获取学员与老师所在班级
+     * @author Joburgess
+     * @date 2021/2/5 0005
+     * @param studentIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
+     */
+    List<ClassGroup> getStudentClassGroupWithTeacher(@Param("studentIds") Set<Integer> studentIds,
+                                                     @Param("teacherId") Integer teacherId);
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -236,6 +236,15 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
     Integer countStudentNum(Integer courseScheduleId);
 
     /**
+     * @describe 统计课程学员数量
+     * @author Joburgess
+     * @date 2021/2/9 0009
+     * @param courseScheduleId:
+     * @return int
+     */
+    int countCourseOnlyStudentNum(@Param("courseScheduleId") Long courseScheduleId);
+
+    /**
      * @param groupId:
      * @param groupType:
      * @return int
@@ -464,4 +473,13 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
                                                @Param("monday") String monday,
                                                @Param("groupId") String groupId,
                                                @Param("courseType")CourseSchedule.CourseScheduleType courseType);
+
+    /**
+     * 获取学员对应课程类型剩余课程价值
+     * @param studentId
+     * @param classGroupId
+     * @param courseType
+     * @return
+     */
+    BigDecimal querySubCoursePriceMap(@Param("studentId") Integer studentId, @Param("classGroupId") Integer classGroupId, @Param("courseType") String courseType);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesDao.java

@@ -37,6 +37,8 @@ public interface ExtracurricularExercisesDao extends BaseDAO<Long, Extracurricul
     List<BasicUserDto> findNoExercisesStudentsInThisWeekWithTeacher(@Param("teacherId") Integer teacherId,
                                                                     @Param("startDate") String startDate,
                                                                     @Param("musicGroupId") String musicGroupId,
+                                                                    @Param("classGroupId") Long classGroupId,
+                                                                    @Param("subjectId") Integer subjectId,
                                                                     @Param("search") String search);
 
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -6,12 +6,14 @@ import com.ym.mec.biz.dal.dto.Student4operating;
 import com.ym.mec.biz.dal.dto.StudentServeCourseDto;
 import com.ym.mec.biz.dal.dto.StudentServeDto;
 import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.GroupType;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Student> {
 	
@@ -174,4 +176,13 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @param serviceTag
      */
     void updateServiceTag(@Param("studentIds") List<Integer> studentIds, @Param("serviceTag") Integer serviceTag);
+
+    /**
+     * @describe 获取学员声部列表
+     * @author Joburgess
+     * @date 2021/2/5 0005
+     * @param studentIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.Subject>
+     */
+    List<Subject> getStudentSubjects(@Param("studentIds") Set<Integer> studentIds);
 }

+ 24 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderStudentDetail.java

@@ -26,6 +26,12 @@ public class MusicGroupPaymentCalenderStudentDetail {
 	/** 现价 */
 	private java.math.BigDecimal courseCurrentPrice;
 
+	/** 可扣减的课程余额 */
+	private java.math.BigDecimal subCourseAmount;
+
+	/** 主班剩余课程价值 */
+	private java.math.BigDecimal masterSubCoursePrice;
+
 	/** 学员需要扣减的课程余额 */
 	private java.math.BigDecimal cutAmount = BigDecimal.ZERO;
 	
@@ -47,6 +53,22 @@ public class MusicGroupPaymentCalenderStudentDetail {
 	/**  */
 	private java.util.Date updateTime;
 
+	public BigDecimal getSubCourseAmount() {
+		return subCourseAmount;
+	}
+
+	public void setSubCourseAmount(BigDecimal subCourseAmount) {
+		this.subCourseAmount = subCourseAmount;
+	}
+
+	public BigDecimal getMasterSubCoursePrice() {
+		return masterSubCoursePrice;
+	}
+
+	public void setMasterSubCoursePrice(BigDecimal masterSubCoursePrice) {
+		this.masterSubCoursePrice = masterSubCoursePrice;
+	}
+
 	public BigDecimal getCutAmount() {
 		return cutAmount;
 	}
@@ -155,20 +177,19 @@ public class MusicGroupPaymentCalenderStudentDetail {
 	public String toString() {
 		return "MusicGroupPaymentCalenderStudentDetail{" +
 				"userId=" + userId +
-				", courseOriginalPrice=" + courseOriginalPrice +
 				", courseCurrentPrice=" + courseCurrentPrice +
 				", courseType='" + courseType + '\'' +
 				", classGroupId=" + classGroupId +
 				'}';
 	}
 
+
 	@Override
 	public boolean equals(Object o) {
 		if (this == o) return true;
 		if (o == null || getClass() != o.getClass()) return false;
 		MusicGroupPaymentCalenderStudentDetail that = (MusicGroupPaymentCalenderStudentDetail) o;
 		return userId.equals(that.userId) &&
-				courseOriginalPrice.doubleValue()==(that.courseOriginalPrice.doubleValue()) &&
 				courseCurrentPrice.doubleValue()==(that.courseCurrentPrice.doubleValue()) &&
 				courseType.equals(that.courseType) &&
 				classGroupId.equals(that.classGroupId);
@@ -176,6 +197,6 @@ public class MusicGroupPaymentCalenderStudentDetail {
 
 	@Override
 	public int hashCode() {
-		return Objects.hash(userId, courseOriginalPrice.doubleValue(), courseCurrentPrice.doubleValue(), courseType, classGroupId);
+		return Objects.hash(userId, courseCurrentPrice.doubleValue(), courseType, classGroupId);
 	}
 }

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

@@ -36,7 +36,7 @@ public interface ExtracurricularExercisesService extends BaseService<Long, Extra
      * @param search:
      * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
      */
-    List<BasicUserDto> getDontServeStudents(Integer teacherId, String search, String musicGroupId);
+    List<BasicUserDto> getDontServeStudents(Integer teacherId, String search, String musicGroupId,Long classGroupId,Integer subjectId);
 
     /**
      * @describe 应布置课外训练提醒

+ 75 - 45
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -3672,65 +3672,64 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Map<Integer, Integer> studentCLassMap = new HashMap<>();
         List<Map<Integer, BigDecimal>> surplusCourseFeeMapList = new ArrayList<>();
         List<Map<String,String>> classGroupStudents = (List<Map<String,String>>)JSON.parse(classGroupStudentMap);
+        //学员剩余课程价值
+        Map<Integer,BigDecimal> classGroupTotalPrice = new HashMap<>();
+        //主班剩余课程价值
+        Map<String, BigDecimal> masterTotalPriceMap = getMasterTotalPriceMap(masterClassGroupId);
+        BigDecimal masterTotalPrice = getMasterTotalPrice(masterClassGroupId);
         for (Map<String, String> classGroupStudent : classGroupStudents) {
             for (String integer : classGroupStudent.keySet()) {
                 //获取学员剩余课程费用
                 surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(Integer.parseInt(integer),classGroupStudent.get(integer)));
                 String[] s = classGroupStudent.get(integer).split(",");
                 for (String s1 : s) {
+                    classGroupTotalPrice.put(Integer.parseInt(s1),courseScheduleStudentPaymentDao.querySubCoursePriceMap(Integer.parseInt(s1),Integer.parseInt(integer),null));
                     studentCLassMap.put(Integer.parseInt(s1),Integer.parseInt(integer));
                 }
             }
         }
         //学员剩余课程费用
         Map<Integer, BigDecimal> surplusCourseFeeMap = MapUtil.convertIntegerMap(surplusCourseFeeMapList);
-        //获取分布默认的课程类型单价
-        MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);
-        Map<String, BigDecimal> unitPriceMap = MapUtil.convertIntegerMap(organizationCourseUnitPriceSettingsDao.queryMapByOrganIdAndChargeTypeId(musicGroup.getChargeTypeId(), musicGroup.getOrganId()));
-        Set<String> masterKeySet = masterMap.keySet();
-        //计算主班课程类型剩余价值
-        Map<String, BigDecimal> masterTotalPriceMap = new HashMap<>(masterKeySet.size());
-        //学员缴费项目列表
+        List<String> courseTypes = new ArrayList(masterMap.keySet());
         List<MusicGroupPaymentCalenderStudentDetail> musicGroupPaymentCalenderStudentDetails = new ArrayList<>();
-        for (String s : masterKeySet) {
-            BigDecimal unitPrice = unitPriceMap.get(s);
-            if (unitPrice == null) {
-                throw new BizException("分部默认课程类型单价不存在,请设置");
-            }
-            BigDecimal courseTime = masterMap.get(s);
-            //获取主班剩余课程价值,按分部默认单价计算
-            //总价四舍五入取整
-            BigDecimal totalPrice = unitPrice.multiply(courseTime).setScale(0, BigDecimal.ROUND_HALF_UP);
-            masterTotalPriceMap.put(s,totalPrice);
-            //课程余额转移
-            for (Integer studentId : studentCLassMap.keySet()) {
-                //学员剩余课程余额
-                BigDecimal bigDecimal = surplusCourseFeeMap.get(studentId);
-                //创建学员缴费项目
+        for (Integer studentId : studentCLassMap.keySet()) {
+            //学员剩余课程价值
+            BigDecimal totalPrice = classGroupTotalPrice.get(studentId);
+            if(totalPrice == null){
+                totalPrice = BigDecimal.ZERO;
+            }
+            //学员剩余课程余额
+            BigDecimal bigDecimal = surplusCourseFeeMap.get(studentId);
+            if(bigDecimal == null){
+                bigDecimal = BigDecimal.ZERO;
+            }
+            //学员可带走的价值
+            BigDecimal subCourseAmount;
+            if(masterTotalPrice.doubleValue() >= totalPrice.doubleValue()){
+                subCourseAmount = totalPrice;
+            }else {
+                subCourseAmount = masterTotalPrice;
+            }
+            if(subCourseAmount.doubleValue() >= bigDecimal.doubleValue()){
+                subCourseAmount = bigDecimal;
+            }
+            for (int i = 0; i < courseTypes.size(); i++) {
+                BigDecimal masterPrice = masterTotalPriceMap.get(courseTypes.get(i));
                 MusicGroupPaymentCalenderStudentDetail calenderDto = new MusicGroupPaymentCalenderStudentDetail();
                 calenderDto.setClassGroupId(studentCLassMap.get(studentId));
-                //如果剩余课程余额小于等于0
-                if(bigDecimal.doubleValue() <= 0d){
-                    calenderDto.setCourseCurrentPrice(totalPrice);
-                    calenderDto.setCourseOriginalPrice(totalPrice);
+                if(subCourseAmount.doubleValue() >= masterPrice.doubleValue()){
+                    calenderDto.setSubCourseAmount(masterPrice);
+                    calenderDto.setCutAmount(masterPrice);
+                    subCourseAmount = subCourseAmount.subtract(masterPrice);
                 }else {
-                    //如果剩余课程余额大于等于总价值,那么补交0元
-                    if(bigDecimal.doubleValue() >= totalPrice.doubleValue()){
-                        calenderDto.setCutAmount(totalPrice);
-                        calenderDto.setCourseCurrentPrice(BigDecimal.ZERO);
-                        calenderDto.setCourseOriginalPrice(BigDecimal.ZERO);
-                    }else {
-                        calenderDto.setCourseCurrentPrice(totalPrice.subtract(bigDecimal));
-                        calenderDto.setCutAmount(bigDecimal);
-                        calenderDto.setCourseOriginalPrice(totalPrice.subtract(bigDecimal));
-                    }
-                    //剩余课程余额减去主班对应课程类型总的课程价值,负数就是需要补交的金额
-//                    bigDecimal = bigDecimal.subtract(totalPrice);
-                    surplusCourseFeeMap.put(studentId,bigDecimal.subtract(totalPrice));
-                }
-                calenderDto.setCourseTime(courseTime.intValue());
-                calenderDto.setCourseType(s);
-
+                    calenderDto.setSubCourseAmount(subCourseAmount);
+                    calenderDto.setCutAmount(subCourseAmount);
+                    subCourseAmount = BigDecimal.ZERO;
+                }
+                calenderDto.setCourseTime(masterMap.get(courseTypes.get(i)).intValue());
+                calenderDto.setMasterSubCoursePrice(masterPrice);
+                calenderDto.setCourseCurrentPrice(masterPrice.subtract(calenderDto.getCutAmount()));
+                calenderDto.setCourseType(courseTypes.get(i));
                 calenderDto.setPhone(phoneMaps.get(studentId));
                 calenderDto.setUserId(studentId);
                 calenderDto.setUsername(userNames.get(studentId));
@@ -3745,8 +3744,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     public BigDecimal getMasterTotalPrice(Integer masterClassGroupId) {
         //获取主班剩余时长
         Map<String, BigDecimal> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseTimeMap(masterClassGroupId));
-        if(masterMap.size() <= 0){
-            throw new BizException("所选主班没有剩余课程,请重新选择");
+        if(masterMap.size() == 0){
+            throw new BizException("操作失败:所选主班没有剩余时长");
         }
         //获取分布默认的课程类型单价
         MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);
@@ -3760,6 +3759,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 throw new BizException("分部默认课程类型单价不存在,请设置");
             }
             BigDecimal courseTime = masterMap.get(s);
+            if(courseTime == null){
+                courseTime = BigDecimal.ZERO;
+            }
             //获取主班剩余课程价值,按分部默认单价计算
             //总价四舍五入取整
             BigDecimal totalPrice = unitPrice.multiply(courseTime).setScale(0, BigDecimal.ROUND_HALF_UP);
@@ -3768,6 +3770,34 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         return masterTotalPrice;
     }
 
+    public Map<String,BigDecimal> getMasterTotalPriceMap(Integer masterClassGroupId) {
+        //获取主班剩余时长
+        Map<String, BigDecimal> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseTimeMap(masterClassGroupId));
+        if(masterMap.size() == 0){
+            throw new BizException("操作失败:所选主班没有剩余时长");
+        }
+        Map<String,BigDecimal> resultMap = new HashMap<>();
+        //获取分布默认的课程类型单价
+        MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);
+        Map<String, BigDecimal> unitPriceMap = MapUtil.convertIntegerMap(organizationCourseUnitPriceSettingsDao.queryMapByOrganIdAndChargeTypeId(musicGroup.getChargeTypeId(), musicGroup.getOrganId()));
+        Set<String> masterKeySet = masterMap.keySet();
+        //计算主班课程类型剩余价值
+        for (String s : masterKeySet) {
+            BigDecimal unitPrice = unitPriceMap.get(s);
+            if (unitPrice == null) {
+                throw new BizException("分部默认课程类型单价不存在,请设置");
+            }
+            BigDecimal courseTime = masterMap.get(s);
+            if(courseTime == null){
+                courseTime = BigDecimal.ZERO;
+            }
+            //获取主班剩余课程价值,按分部默认单价计算
+            BigDecimal totalPrice = unitPrice.multiply(courseTime).setScale(0, BigDecimal.ROUND_HALF_UP);
+            resultMap.put(s,totalPrice);
+        }
+        return resultMap;
+    }
+
     @Override
     public Map<String, Long> querySubCourseTime(Integer classGroupId) {
         return MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(classGroupId));

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -721,12 +721,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 								if (StringUtils.equals(settlementType, "GRADIENT_SALARY")) {
 									salary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? tdms.getMainTeacher90MinSalary() : tdms.getAssistantTeacher90MinSalary();
 								}
-								courseScheduleTeacherSalary.setExpectSalary(salary);
+								int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(courseSchedule.getId());
+								courseScheduleTeacherSalary.setExpectSalary(salary.multiply(new BigDecimal(studentNum)));
 							}
 							//线上小班课
 							if(type == CourseScheduleType.HIGH_ONLINE){
-								Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroup.getId());
-								BigDecimal salary = JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+								int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(courseSchedule.getId());
+								BigDecimal salary = JSON.parseObject(tdms.getSalaryRuleJson()).getBigDecimal(studentNum+"");
 								courseScheduleTeacherSalary.setExpectSalary(salary);
 							}
 

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1199,16 +1199,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 if(Objects.isNull(salary)){
                     throw new BizException("课酬设置异常");
                 }
-                Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(courseSchedule.getClassGroupId());
+                int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(courseSchedule.getId());
                 salary = salary.multiply(new BigDecimal(studentNum));
             }
             //线上小班课
             if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.HIGH_ONLINE)) {
-                Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(courseSchedule.getClassGroupId());
+                int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(courseSchedule.getId());
                 if(studentNum>5){
                     studentNum=5;
                 }
-                salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum.toString());
+                salary = JSON.parseObject(teacherDefaultMusicGroupSalary.getSalaryRuleJson()).getBigDecimal(studentNum+"");
             }
 
             if (courseSchedule.getType().equals(CourseSchedule.CourseScheduleType.MUSIC_NETWORK)) {

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

@@ -168,10 +168,10 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
 	}
 
 	@Override
-	public List<BasicUserDto> getDontServeStudents(Integer teacherId, String search, String musicGroupId) {
+	public List<BasicUserDto> getDontServeStudents(Integer teacherId, String search, String musicGroupId,Long classGroupId,Integer subjectId) {
 		LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
 		LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
-		return extracurricularExercisesDao.findNoExercisesStudentsInThisWeekWithTeacher(teacherId, monDayDate.toString(), musicGroupId, search);
+		return extracurricularExercisesDao.findNoExercisesStudentsInThisWeekWithTeacher(teacherId, monDayDate.toString(), musicGroupId, classGroupId, subjectId, search);
 	}
 
 	@Override

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

@@ -471,6 +471,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		}else {
 			imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
 		}
+
 		return batchNo;
 	}
 

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

@@ -84,7 +84,7 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 //				exercisesSituationDto.setExpectExercisesNum((int) until+1);
 				List<UserGroupDto> userGroupDtos = userGroupsMap.get(exercisesSituationDto.getStudentId());
 				if(!CollectionUtils.isEmpty(userGroupDtos)){
-					exercisesSituationDto.setGroupNames(userGroupDtos.stream().map(UserGroupDto::getGroupName).sorted().collect(Collectors.joining(",")));
+					exercisesSituationDto.setGroupNames(userGroupDtos.stream().filter(ug->StringUtils.isNotBlank(ug.getGroupName())).map(UserGroupDto::getGroupName).sorted().collect(Collectors.joining(",")));
 				}
 				List<StudentEduTeacherDto> studentEduTeachers = studentEduTeachersMap.get(exercisesSituationDto.getStudentId());
 				if(!CollectionUtils.isEmpty(studentEduTeachers)){

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

@@ -714,7 +714,7 @@ public class StudentManageServiceImpl implements StudentManageService {
             for (Student4operating student4operating : dataList) {
                 List<UserGroupDto> userGroupDtos = userGroupsMap.get(student4operating.getStudentId());
                 if(!CollectionUtils.isEmpty(userGroupDtos)){
-                    student4operating.setGroupNames(userGroupDtos.stream().map(UserGroupDto::getGroupName).sorted().collect(Collectors.joining(",")));
+                    student4operating.setGroupNames(userGroupDtos.stream().filter(ug->StringUtils.isNotBlank(ug.getGroupName())).map(UserGroupDto::getGroupName).sorted().collect(Collectors.joining(",")));
                 }
             }
         }

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -845,9 +845,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 //修改原有乐团注册信息
                 studentRegistrationDao.update(studentRegistration);
             }
+            Boolean orderFlag = true;
             //用户是否在主乐团
             StudentRegistration registration = studentRegistrationDao.getByPhoneAndMusicGroupId(newMusicGroupId, studentRegistration.getParentsPhone());
             if (registration != null) {
+                if(registration.getMusicGroupStatus() == StudentMusicGroupStatusEnum.NORMAL){
+                    orderFlag = false;
+                }
                 //修改剩余课程余额
                 Date date = new Date();
                 registration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
@@ -874,6 +878,28 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     musicGroupStudentFeeDao.insert(musicGroupStudentFee);
                 }
             }
+            StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(registration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
+
+            if (waitPayOrder != null) {
+                waitPayOrder.setStatus(DealStatusEnum.CLOSE);
+                studentPaymentOrderService.update(waitPayOrder);
+            }
+            if(orderFlag){
+                //生成订单
+                StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+                studentPaymentOrder.setUserId(registration.getUserId());
+                studentPaymentOrder.setGroupType(GroupType.MUSIC);
+                studentPaymentOrder.setType(OrderTypeEnum.APPLY);
+                studentPaymentOrder.setMusicGroupId(registration.getMusicGroupId());
+                studentPaymentOrder.setClassGroupId(registration.getClassGroupId());
+                studentPaymentOrder.setOrganId(registration.getOrganId());
+                studentPaymentOrder.setRoutingOrganId(registration.getOrganId());
+                studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
+                studentPaymentOrder.setActualAmount(BigDecimal.ZERO);
+                studentPaymentOrder.setPayTime(new Date());
+                studentPaymentOrder.setExpectAmount(BigDecimal.ZERO);
+                studentPaymentOrderService.insert(studentPaymentOrder);
+            }
             //主班新增余额日志
             if(amount.doubleValue() != 0d && masterTotalPrice.doubleValue() > 0d){
                 StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();

+ 20 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultMusicGroupSalaryServiceImpl.java

@@ -9,6 +9,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -17,10 +18,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.TeacherDefaultMusicGroupSalaryDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.MusicGroup;
@@ -42,6 +39,9 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 	private TeacherDefaultMusicGroupSalaryDao teacherDefaultMusicGroupSalaryDao;
 
 	@Autowired
+	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+
+	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
 	
 	@Autowired
@@ -125,25 +125,23 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 										.getEndClassTime()));
 								int mins = 0;
 								if(tdms.getCourseScheduleType() == CourseScheduleType.HIGH_ONLINE || tdms.getCourseScheduleType() == CourseScheduleType.MUSIC_NETWORK) {
-									if (!classGroupStudentNumMap.containsKey(ts.getClassGroupId())) {
-										// 查询 班级人数
-										String[] strs = classGroupStudentMapperDao.findStudentNumByClassGroupId(ts.getClassGroupId());
-										classGroupStudentNumMap.put(ts.getClassGroupId(), strs.length);
-									}
+									int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(ts.getCourseScheduleId());
+
 									String salaryRuleJson = tdms.getSalaryRuleJson();
 									if (StringUtils.isNotBlank(salaryRuleJson)) {
 										JSONObject obj = JSON.parseObject(salaryRuleJson);
 										if(obj == null){
 											throw new BizException("课酬设置不完整");
 										}
-										Integer studentNum = classGroupStudentNumMap.get(ts.getClassGroupId());
-										if(studentNum == null || studentNum == 0){
-											studentNum = 1;
-										}
+
 										if(studentNum>5){
 											studentNum = 5;
 										}
-										ts.setExpectSalary(new BigDecimal(obj.getDouble(studentNum + "")));
+										if(studentNum==0){
+											ts.setExpectSalary(BigDecimal.ZERO);
+										}else{
+											ts.setExpectSalary(new BigDecimal(obj.getDouble(studentNum + "")));
+										}
 										list.add(ts);
 									}
 									
@@ -163,6 +161,10 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 											ts.setExpectSalary(duration.divide(new BigDecimal(mins), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher90MinSalary()));
 										}
 									}
+									if(CourseScheduleType.HIGH.equals(tdms.getCourseScheduleType())){
+										int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(ts.getCourseScheduleId());
+										ts.setExpectSalary(ts.getExpectSalary().multiply(new BigDecimal(studentNum)));
+									}
 									list.add(ts);
 								} else if (musicGroup.getSettlementType() == SalarySettlementTypeEnum.TEACHER_DEFAULT) {// 默认课酬
 									mins = 30;
@@ -181,6 +183,10 @@ public class TeacherDefaultMusicGroupSalaryServiceImpl extends BaseServiceImpl<L
 											ts.setExpectSalary(duration.divide(minsDecimal, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(tdms.getAssistantTeacher30MinSalary()));
 										}
 									}
+									if(CourseScheduleType.HIGH.equals(tdms.getCourseScheduleType())){
+										int studentNum = courseScheduleStudentPaymentDao.countCourseOnlyStudentNum(ts.getCourseScheduleId());
+										ts.setExpectSalary(ts.getExpectSalary().multiply(new BigDecimal(studentNum)));
+									}
 									list.add(ts);
 								}
 								if(ts.getExpectSalary() == null){

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

@@ -293,6 +293,7 @@
         <result column="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="del_flag_" property="delFlag"/>
+        <result column="lock_flag_" property="lockFlag"/>
         <result column="expect_student_num_" property="expectStudentNum"/>
         <result column="total_class_times_" property="totalClassTimes"/>
     </resultMap>

+ 22 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -653,4 +653,26 @@
         HAVING
         COUNT(CASE WHEN cgsm.status_ = 'NORMAL' THEN 1 ELSE NULL END) &lt; 3
     </select>
+
+    <select id="getStudentClassGroupWithTeacher" resultMap="com.ym.mec.biz.dal.dao.ClassGroupDao.ClassGroup">
+        SELECT
+            DISTINCT cg.*
+        FROM
+            class_group_student_mapper cgsm
+            LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
+            LEFT JOIN class_group cg ON cg.id_ = cgsm.class_group_id_
+        WHERE
+            cg.del_flag_ = 0
+            AND cg.lock_flag_ =0
+            AND cgsm.status_='NORMAL'
+            AND cgsm.user_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
+            <if test="teacherId!=null">
+                AND cgtm.user_id_ = #{teacherId}
+            </if>
+            AND cg.id_ IS NOT NULL
+        ORDER BY cg.id_ DESC
+    </select>
 </mapper>

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

@@ -2345,8 +2345,8 @@
             cs.is_lock_,
             s.name_ schoole_name_,
             o.name_ organ_name_,
-            CASE WHEN COUNT(CASE WHEN sa.remark_ IS NULL THEN NULL ELSE sa.id_ END) > 0 THEN 1 ELSE 0 END isCallNames,
-            CASE WHEN COUNT(CASE WHEN ta.is_complaints_ = 1 THEN 1 ELSE NULL END) > 0 THEN '1' ELSE '0' END is_complaints_
+            CASE WHEN COUNT(sa.id_) > 0 THEN 1 ELSE 0 END isCallNames,
+            CASE WHEN COUNT(ta.id_) > 0 THEN '1' ELSE '0' END is_complaints_
         FROM
             course_schedule cs
             LEFT JOIN school s ON cs.schoole_id_=s.id_

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -340,6 +340,9 @@
 	<select id="countStudentNum" resultType="java.lang.Integer">
 		SELECT COUNT(id_) FROM course_schedule_student_payment WHERE course_schedule_id_ = #{courseScheduleId}
 	</select>
+	<select id="countCourseOnlyStudentNum" resultType="int">
+		SELECT COUNT(user_id_) FROM course_schedule_student_payment WHERE course_schedule_id_ = #{courseScheduleId}
+	</select>
     <select id="findStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
 		SELECT su.id_ user_id_,su.username_,su.avatar_ head_url_,su.gender_
 		FROM course_schedule_student_payment cssp
@@ -711,4 +714,12 @@
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_=cs.id_
 		WHERE cs.new_course_id_=#{mainMergeCourseId}
 	</select>
+    <select id="querySubCoursePriceMap" resultType="java.math.BigDecimal">
+		SELECT SUM(cssp.expect_price_) FROM course_schedule_student_payment cssp
+		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+		WHERE cssp.class_group_id_ = #{classGroupId} AND cssp.user_id_ = #{studentId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW()
+	  <if test="courseType != null">
+		  AND cs.type_ = #{courseType}
+	  </if>
+	</select>
 </mapper>

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

@@ -172,6 +172,9 @@
 			<if test="musicGroupId!=null and musicGroupId!=''">
 				LEFT JOIN student_registration sr ON sees.student_id_=sr.user_id_
 			</if>
+			<if test="classGroupId!=null">
+				LEFT JOIN class_group_student_mapper cgsm ON sees.student_id_ = cgsm.user_id_
+			</if>
 			LEFT JOIN student stu ON stu.user_id_ = sees.student_id_
 			LEFT JOIN sys_user su ON su.id_ = sees.student_id_
 			LEFT JOIN `subject` sub ON FIND_IN_SET( sub.id_, stu.subject_id_list_ )
@@ -183,6 +186,12 @@
 			<if test="musicGroupId!=null and musicGroupId!=''">
 				AND sr.music_group_id_=#{musicGroupId}
 			</if>
+			<if test="classGroupId!=null">
+				AND cgsm.class_group_id_ = #{classGroupId}
+			</if>
+			<if test="subjectId!=null">
+				AND FIND_IN_SET(#{subjectId}, stu.subject_id_list_)
+			</if>
 			<if test="search!=null">
 				AND (su.username_ LIKE CONCAT('%', #{search}, '%') OR su.phone_ LIKE CONCAT(#{search}, '%'))
 			</if>

+ 8 - 4
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderStudentDetailMapper.xml

@@ -13,6 +13,7 @@
 		<result column="username_" property="username" />
 		<result column="course_original_price_" property="courseOriginalPrice" />
 		<result column="course_current_price_" property="courseCurrentPrice" />
+		<result column="master_sub_course_price_" property="masterSubCoursePrice" />
 		<result column="course_type_" property="courseType" />
 		<result column="course_time_" property="courseTime" />
 		<result column="class_group_id_" property="classGroupId" />
@@ -34,9 +35,9 @@
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO music_group_payment_calender_student_detail (id_,user_id_,phone_,username_,course_original_price_,
-																 course_current_price_,course_type_,course_time_,class_group_id_,batch_no_,create_time_,update_time_)
+																 course_current_price_,course_type_,course_time_,class_group_id_,batch_no_,create_time_,update_time_,master_sub_course_price_)
 		VALUES(#{id},#{userId},#{phone},#{username},#{courseOriginalPrice},#{courseCurrentPrice},
-			   #{courseType},#{courseTime},#{classGroupId},#{batchNo},NOW(),NOW())
+			   #{courseType},#{courseTime},#{classGroupId},#{batchNo},NOW(),NOW(),#{masterSubCoursePrice})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -45,6 +46,9 @@
 		<if test="userId != null">
 		user_id_ = #{userId},
 		</if>
+		<if test="masterSubCoursePrice != null">
+			master_sub_course_price_ = #{masterSubCoursePrice},
+		</if>
 		<if test="classGroupId != null">
 		class_group_id_ = #{classGroupId},
 		</if>
@@ -89,11 +93,11 @@
 	</select>
 	<insert id="batchInsert">
 		INSERT INTO music_group_payment_calender_student_detail (user_id_,phone_,username_,course_original_price_,
-		course_current_price_,course_type_,course_time_,class_group_id_,batch_no_,create_time_,update_time_)
+		course_current_price_,course_type_,course_time_,class_group_id_,batch_no_,create_time_,update_time_,master_sub_course_price_)
 		VALUES
 		<foreach collection="musicGroupPaymentCalenderStudentDetails" item="item" index="index" separator=",">
 			(#{item.userId},#{item.phone},#{item.username},#{item.courseOriginalPrice},#{item.courseCurrentPrice},
-			#{item.courseType},#{item.courseTime},#{item.classGroupId},#{batchNo},NOW(),NOW())
+			#{item.courseType},#{item.courseTime},#{item.classGroupId},#{batchNo},NOW(),NOW(),#{item.masterSubCoursePrice})
 		</foreach>
 	</insert>
 

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

@@ -268,7 +268,7 @@
 		</if>
 		<if test="submitStartDate==null or submitEndDate==null">
 			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND exercises_reply_num_ &lt; SUM( actual_exercises_num_ )
+				AND exercises_reply_num_ &lt; actual_exercises_num_
 			</if>
 			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
 				AND exercises_reply_num_ &gt;= actual_exercises_num_
@@ -356,7 +356,7 @@
 		</if>
 		<if test="submitStartDate==null or submitEndDate==null">
 			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==0">
-				AND exercises_reply_num_ &lt; SUM( actual_exercises_num_ )
+				AND exercises_reply_num_ &lt; actual_exercises_num_
 			</if>
 			<if test="exercisesReplyNumIsAchieve!=null and exercisesReplyNumIsAchieve==1">
 				AND exercises_reply_num_ &gt;= actual_exercises_num_

+ 15 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -629,4 +629,19 @@
         GROUP BY s.user_id_ HAVING COUNT(CASE WHEN cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) = 0
         AND COUNT(CASE WHEN sr.music_group_status_ = 'NORMAL' AND mg.status_ = 'PROGRESS' THEN 1 ELSE NULL END) = 0;
     </select>
+
+    <select id="getStudentSubjects" resultMap="com.ym.mec.biz.dal.dao.SubjectDao.Subject">
+        SELECT
+            DISTINCT sub.*
+        FROM
+            student stu
+            LEFT JOIN `subject` sub ON FIND_IN_SET( sub.id_, stu.subject_id_list_ )
+        WHERE
+            stu.user_id_ IN
+            <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+                #{studentId}
+            </foreach>
+            AND sub.id_ IS NOT NULL
+        ORDER BY sub.id_ DESC
+    </select>
 </mapper>

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

@@ -776,6 +776,7 @@
             <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
                 #{studentId}
             </foreach>
+        ORDER BY mg.create_time_ DESC
     </select>
     <!-- 批量删除信息 -->
     <delete id="batchDelete">

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

@@ -598,6 +598,8 @@
         FROM teacher_attendance ta
         LEFT JOIN student_attendance sa ON ta.course_schedule_id_ = sa.course_schedule_id_
         WHERE ta.course_schedule_id_ = #{courseScheduleId}
+        AND ta.sign_in_time_ IS NOT NULL AND ta.sign_out_time_ IS NOT NULL
+        AND sa.sign_in_time_ IS NOT NULL AND sa.sign_out_time_ IS NOT NULL
     </select>
     <select id="findFirstSign" resultType="java.lang.Long">
         SELECT ta.course_schedule_id_ FROM teacher_attendance ta

+ 39 - 7
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ExtracurricularExercisesController.java

@@ -2,10 +2,14 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
 import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.ExtracurricularExercisesService;
@@ -22,10 +26,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +46,10 @@ public class ExtracurricularExercisesController extends BaseController {
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
+    @Autowired
+    private StudentDao studentDao;
 
     @ApiOperation(value = "创建课外训练")
     @PostMapping("/createExtraExercises")
@@ -81,12 +86,12 @@ public class ExtracurricularExercisesController extends BaseController {
 
     @ApiOperation(value = "获取待布置学员列表")
     @GetMapping("/getDontServeStudents")
-    public HttpResponseResult getDontServeStudents(String search, String musicGroupId){
+    public HttpResponseResult getDontServeStudents(String search, String musicGroupId, Long classGroupId, Integer subjectId){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(Objects.isNull(sysUser)){
             return failed(HttpStatus.FORBIDDEN,"请登录");
         }
-        return succeed(extracurricularExercisesService.getDontServeStudents(sysUser.getId(), search, musicGroupId));
+        return succeed(extracurricularExercisesService.getDontServeStudents(sysUser.getId(), search, musicGroupId, classGroupId, subjectId));
     }
 
     @ApiOperation(value = "获取待布置学员乐团列表")
@@ -96,7 +101,7 @@ public class ExtracurricularExercisesController extends BaseController {
         if(Objects.isNull(sysUser)){
             return failed(HttpStatus.FORBIDDEN,"请登录");
         }
-        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(sysUser.getId(), search, null);
+        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(sysUser.getId(), search, null, null,null);
         if(CollectionUtils.isEmpty(dontServeStudents)){
             return succeed(Collections.emptyList());
         }
@@ -104,4 +109,31 @@ public class ExtracurricularExercisesController extends BaseController {
         List<MusicGroup> studentNormalMusicGroups = studentRegistrationDao.getStudentNormalMusicGroups(studentIds);
         return succeed(studentNormalMusicGroups);
     }
+
+    @ApiOperation(value = "获取服务学员查询条件")
+    @GetMapping("/getDontServeStudentQueryCondition")
+    public HttpResponseResult getDontServeStudentQueryCondition(){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(sysUser)){
+            return failed(HttpStatus.FORBIDDEN,"请登录");
+        }
+        Map<String, Object> result = new HashMap<>();
+        List<BasicUserDto> dontServeStudents = extracurricularExercisesService.getDontServeStudents(sysUser.getId(), null, null, null, null);
+        if(CollectionUtils.isEmpty(dontServeStudents)){
+            result.put("musicGroups", Collections.emptyList());
+            result.put("classGroups", Collections.emptyList());
+            result.put("subjects", Collections.emptyList());
+            return succeed(result);
+        }
+        Set<Integer> studentIds = dontServeStudents.stream().map(BasicUserDto::getUserId).collect(Collectors.toSet());
+        List<MusicGroup> studentNormalMusicGroups = studentRegistrationDao.getStudentNormalMusicGroups(studentIds);
+        result.put("musicGroups", studentNormalMusicGroups);
+
+        List<ClassGroup> classGroups = classGroupStudentMapperDao.getStudentClassGroupWithTeacher(studentIds, sysUser.getId());
+        result.put("classGroups", classGroups);
+
+        List<Subject> studentSubjects = studentDao.getStudentSubjects(studentIds);
+        result.put("subjects", studentSubjects);
+        return succeed(result);
+    }
 }

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ChargeTypeController.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.service.ChargeTypeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.QueryInfo;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -26,6 +27,7 @@ public class ChargeTypeController extends BaseController {
     @ApiOperation(value = "新增、修改收费类型")
     @PostMapping("/upSet")
     @PreAuthorize("@pcs.hasPermissions('chargeType/upSet')")
+    @AuditLogAnnotation(operateName = "新增、修改收费类型")
     public Object upSet(@RequestBody ChargeType chargeType) {
         chargeTypeService.upSet(chargeType);
         return succeed();

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ChargeTypeSubjectMapperController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -47,6 +48,7 @@ public class ChargeTypeSubjectMapperController extends BaseController {
     @ApiOperation(value = "修改对象")
 	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     @PreAuthorize("@pcs.hasPermissions('chargeTypeSubjectMapper/update')")
+    @AuditLogAnnotation(operateName = "收费类型与科目的关联修改")
     public Object update(@RequestBody List<ChargeTypeSubjectMapper> chargeTypeSubjectMapperList) {
     	chargeTypeSubjectMapperService.batchUpdate(chargeTypeSubjectMapperList);
         return succeed();

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupOrganizationCourseSettingsController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -49,6 +50,7 @@ public class MusicGroupOrganizationCourseSettingsController extends BaseControll
     @ApiOperation(value = "修改收费方式")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('musicGroupOrganizationCourseSettings/update')")
+    @AuditLogAnnotation(operateName = "修改收费方式")
     public HttpResponseResult<MusicGroupOrganizationCourseSettings> update(@RequestBody MusicGroupOrganizationCourseSettings musicGroupOrganizationCourseSettings) {
         return succeed(musicGroupOrganizationCourseSettingsService.updateSetting(musicGroupOrganizationCourseSettings));
     }

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationCourseDurationSettingsController.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.service.OrganizationCourseDurationSettingsService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -48,6 +49,7 @@ public class OrganizationCourseDurationSettingsController extends BaseController
     @ApiOperation(value = "修改分部课程时长设置")
     @PostMapping(value = "/update")
     @PreAuthorize("@pcs.hasPermissions('organizationCourseDurationSettings/update')")
+    @AuditLogAnnotation(operateName = "修改分部课程时长设置")
     public HttpResponseResult<OrganizationCourseDurationSettings> update(OrganizationCourseDurationSettings organizationCourseDurationSettings) {
         organizationCourseDurationSettings.setUpdateTime(new Date());
         organizationCourseDurationSettingsService.update(organizationCourseDurationSettings);

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/OrganizationCourseUnitPriceSettingsController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -56,6 +57,7 @@ public class OrganizationCourseUnitPriceSettingsController extends BaseControlle
 	@ApiOperation(value = "修改对象")
 	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('organizationCourseUnitPriceSettings/update')")
+	@AuditLogAnnotation(operateName = "修改分部课程单价")
 	public Object update(@RequestBody OrganizationCourseUnitPriceSettings organizationCourseUnitPriceSettings) {
 		organizationCourseUnitPriceSettings.setUpdateTime(new Date());
 		organizationCourseUnitPriceSettingsService.update(organizationCourseUnitPriceSettings);

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysConfigController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -44,6 +45,7 @@ public class SysConfigController extends BaseController {
 	@ApiOperation(value = "修改参数")
 	@PostMapping(value = "update")
     @PreAuthorize("@pcs.hasPermissions('sysConfig/update')")
+	@AuditLogAnnotation(operateName = "修改参数")
 	public Object update(SysConfig config) {
 		config.setModifyOn(new Date());
 		sysConfigService.update(config);

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.QueryInfo;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,6 +74,7 @@ public class TeacherController extends BaseController {
     @ApiOperation(value = "修改教师信息")
     @PostMapping("/update")
     @PreAuthorize("@pcs.hasPermissions('teacher/update')")
+    @AuditLogAnnotation(operateName = "修改教师信息")
     public Object update(Teacher teacher) {
         teacherService.updateTea(teacher);
         return succeed();

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultMusicGroupSalaryController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -30,6 +31,7 @@ public class TeacherDefaultMusicGroupSalaryController extends BaseController {
     @ApiOperation(value = "批量新增、修改教师乐团课薪酬")
     @PostMapping("/batchUpset")
     @PreAuthorize("@pcs.hasPermissions('teacherDefaultMusicGroupSalary/batchUpset')")
+    @AuditLogAnnotation(operateName = "批量新增、修改教师乐团课薪酬")
     public Object batchUpset(@RequestBody TeacherDefaultMusicGroupSalaryTemp teacherDefaultMusicGroupSalaryTemp) {
         teacherDefaultMusicGroupSalaryService.batchUpset(teacherDefaultMusicGroupSalaryTemp.teacherDefaultMusicGroupSalaries, teacherDefaultMusicGroupSalaryTemp.startDate);
         return succeed();

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultPracticeGroupSalaryController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary;
 import com.ym.mec.biz.service.TeacherDefaultPracticeGroupSalaryService;
 import com.ym.mec.common.controller.BaseController;
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +31,7 @@ public class TeacherDefaultPracticeGroupSalaryController extends BaseController
 	@ApiOperation(value = "批量新增、修改教师陪练课课酬")
 	@PostMapping("/update")
 	@PreAuthorize("@pcs.hasPermissions('teacherDefaultPracticeGroupSalary/update')")
+	@AuditLogAnnotation(operateName = "批量新增、修改教师陪练课课酬")
 	public Object update(@RequestBody TeacherDefaultPracticeGroupSalaryTemp teacherDefaultPracticeGroupSalaryTemp) {
 		return teacherDefaultPracticeGroupSalaryService.update(teacherDefaultPracticeGroupSalaryTemp.getTeacherDefaultPracticeGroupSalaries(),
 				teacherDefaultPracticeGroupSalaryTemp.getStartDate()) ? succeed() : failed();

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -48,6 +49,7 @@ public class TeacherDefaultVipGroupSalaryController extends BaseController {
     @ApiOperation(value = "批量新增、修改教师vip课酬")
     @PostMapping("/upSet")
     @PreAuthorize("@pcs.hasPermissions('teacherDefaultVipGroupSalary/upSet')")
+    @AuditLogAnnotation(operateName = "批量新增、修改教师vip课酬")
     public Object setVipGroupSalary(@RequestBody TeacherDefaultVipGroupSalaryTemp teacherDefaultVipGroupSalaryTemp){
         teacherDefaultVipGroupSalaryService.upSet(teacherDefaultVipGroupSalaryTemp.teacherDefaultVipGroupSalaries, teacherDefaultVipGroupSalaryTemp.startDate);
         return succeed();