瀏覽代碼

Merge remote-tracking branch 'origin/master'

zouxuan 4 年之前
父節點
當前提交
56000f5dcb

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupStudentsDto.java

@@ -20,6 +20,9 @@ public class MusicGroupStudentsDto{
     @ApiModelProperty(value = "手机号",required = false)
     private String phone;
 
+    @ApiModelProperty(value = "年级年份",required = false)
+    private Date currentGradeDate;
+
     @ApiModelProperty(value = "年级",required = false)
     private String currentGrade;
 
@@ -220,4 +223,12 @@ public class MusicGroupStudentsDto{
     public void setQuitReason(String quitReason) {
         this.quitReason = quitReason;
     }
+
+    public Date getCurrentGradeDate() {
+        return currentGradeDate;
+    }
+
+    public void setCurrentGradeDate(Date currentGradeDate) {
+        this.currentGradeDate = currentGradeDate;
+    }
 }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentApplyDetailDto.java

@@ -9,6 +9,8 @@ import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.common.enums.UserGenderEnum;
 import com.ym.mec.common.page.QueryInfo;
 
+import java.util.Date;
+
 public class StudentApplyDetailDto{
 
     @ApiModelProperty(value = "学生报名编号",required = false)
@@ -24,6 +26,10 @@ public class StudentApplyDetailDto{
     private String parentsName;
 
     /** 当前所在年级 */
+    @ApiModelProperty(value = "年级年份",required = false)
+    private Date currentGradeDate;
+
+    /** 当前所在年级 */
     @ApiModelProperty(value = "当前所在年级",required = false)
     private String currentGrade;
 
@@ -189,4 +195,12 @@ public class StudentApplyDetailDto{
     public void setSubjectChange(SubjectChange subjectChange) {
         this.subjectChange = subjectChange;
     }
+
+    public Date getCurrentGradeDate() {
+        return currentGradeDate;
+    }
+
+    public void setCurrentGradeDate(Date currentGradeDate) {
+        this.currentGradeDate = currentGradeDate;
+    }
 }

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentInfo.java

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.Subject;
 
+import java.util.Date;
+
 public class StudentInfo extends SysUser {
 
 	/**
@@ -15,7 +17,9 @@ public class StudentInfo extends SysUser {
 	private String name;
 	
 	private String grade;
-	
+
+	private Date gradeDate;
+
 	private String clazz;
 	
 	private String parentsName;
@@ -66,4 +70,12 @@ public class StudentInfo extends SysUser {
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
+
+	public Date getGradeDate() {
+		return gradeDate;
+	}
+
+	public void setGradeDate(Date gradeDate) {
+		this.gradeDate = gradeDate;
+	}
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDetailDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.School;
 import com.ym.mec.biz.dal.enums.*;
 
 import java.util.Date;
@@ -31,6 +32,8 @@ public class TeacherAttendanceDetailDto {
     private Date signOutTime;
 
     private Integer attendClassTime;
+    
+    private School school;
 
     public Integer getAttendClassTime() {
         return attendClassTime;
@@ -135,4 +138,12 @@ public class TeacherAttendanceDetailDto {
     public void setSignOutTime(Date signOutTime) {
         this.signOutTime = signOutTime;
     }
+
+	public School getSchool() {
+		return school;
+	}
+
+	public void setSchool(School school) {
+		this.school = school;
+	}
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -40,6 +40,9 @@ public class StudentRegistration {
     @ApiModelProperty(value = "当前所在年级", required = false)
     private String currentGrade;
 
+    @ApiModelProperty(value = "年级年份", required = false)
+    private Date currentGradeDate;
+
     @ApiModelProperty(value = "当前所在班级", required = false)
     private String currentClass;
 
@@ -401,4 +404,12 @@ public class StudentRegistration {
     public void setSurplusCourseFee(BigDecimal surplusCourseFee) {
         this.surplusCourseFee = surplusCourseFee;
     }
+
+    public Date getCurrentGradeDate() {
+        return currentGradeDate;
+    }
+
+    public void setCurrentGradeDate(Date currentGradeDate) {
+        this.currentGradeDate = currentGradeDate;
+    }
 }

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

@@ -221,27 +221,57 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
 
             TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
-            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())||YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
-                //未签到或异常签到扣除一半课酬
-                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
-                deductReasons.add("未签到或异常签到扣除一半课酬");
+            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
+                //未签到扣除全部课酬
+                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                deductReasons.add("未签到扣除全部课酬");
+            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
+                //异常签到
+                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
+                int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
+                if(signCourseTimeBetween<1&&signCourseTimeBetween>-3){
+                    //课程开始前1分钟至开始后3分钟进入教室
+                    deductCost = deductCost.add(new BigDecimal(50));
+                    deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除50元");
+                }else if(signCourseTimeBetween<-3){
+                    //课程开始后3分钟后进入教室
+                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
+                }
             }
 
-            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())||YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
-                //未签退或异常签退扣除一半课酬
+            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
+                //未签退扣除一半课酬
                 deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
-                deductReasons.add("未签退或异常签退扣除一半课酬");
+                deductReasons.add("未签退扣除一半课酬");
+            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
+                //异常签退
+                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
+                int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
+
+                int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getEndClassTime());
+                int signOutCourseTimeBetween = signOutCourseTimeBetweenSeconds/60;
+
+                if(signCourseTimeBetween<20&&signCourseTimeBetween>-3){
+                    //课程开始前20分钟至开始后3分钟退出教室
+                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductReasons.add("课程开始前20分钟至开始后3分钟退出教室扣除全部课酬");
+                }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
+                    //课程结束前3分钟后至课程结束前退出教室
+                    deductCost = deductCost.add(new BigDecimal(50));
+                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除50元");
+                }
             }
 
             BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
             if(BigDecimal.ZERO.compareTo(deductCost)<0){
                 deductReasons.add("扣除总费用:" + deductCost);
+                courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
             }
 
             courseScheduleTeacherSalary.setActualSalary(finalSalary);
             courseScheduleTeacherSalary.setSettlementTime(now);
-            courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         });
     }
@@ -304,26 +334,68 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             List<TeacherAttendance> courseTeacherAttendances = teacherCourseAttendanceMap.get(org.apache.commons.lang3.StringUtils.joinWith(":", courseScheduleTeacherSalary.getCourseScheduleId(), courseScheduleTeacherSalary.getUserId()));
 
             TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
-            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())||YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
-                //未签到或异常签到扣除一半课酬
-                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
-                deductReasons.add("未签到或异常签到扣除一半课酬");
+            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
+                //未签到扣除全部课酬
+                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                deductReasons.add("未签到扣除全部课酬");
+            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
+                //异常签到
+                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
+                int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
+                if(signCourseTimeBetween<1&&signCourseTimeBetween>-3){
+                    //课程开始前1分钟至开始后3分钟进入教室
+                    deductCost = deductCost.add(new BigDecimal(50));
+                    deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除50元");
+                }else if(signCourseTimeBetween<-3){
+                    //课程开始后3分钟后进入教室
+                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
+                }
+
+                if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
+                    deductCost = courseScheduleTeacherSalary.getExpectSalary();
+                    deductReasons.clear();
+                    deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
+                }
             }
 
-            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())||YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
-                //未签退或异常签退扣除一半课酬
+            if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
+                //未签退扣除一半课酬
                 deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
-                deductReasons.add("未签退或异常签退扣除一半课酬");
+                deductReasons.add("未签退扣除一半课酬");
+            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
+                //异常签退
+                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getStartClassTime());
+                int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
+
+                int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseScheduleTeacherSalary.getCourseSchedule().getEndClassTime());
+                int signOutCourseTimeBetween = signOutCourseTimeBetweenSeconds/60;
+
+                if(signCourseTimeBetween<20&&signCourseTimeBetween>-3){
+                    //课程开始前20分钟至开始后3分钟退出教室
+                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductReasons.add("课程开始前20分钟至开始后3分钟退出教室扣除全部课酬");
+                }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
+                    //课程结束前3分钟后至课程结束前退出教室
+                    deductCost = deductCost.add(new BigDecimal(50));
+                    deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除50元");
+                }
+
+                if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
+                    deductCost = courseScheduleTeacherSalary.getExpectSalary();
+                    deductReasons.clear();
+                    deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
+                }
             }
 
             if(BigDecimal.ZERO.compareTo(deductCost)<0){
                 deductReasons.add("扣除总费用:" + deductCost);
+                courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
             }
 
             BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
             courseScheduleTeacherSalary.setActualSalary(finalSalary);
-            courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
             courseScheduleTeacherSalary.setSettlementTime(now);
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         });
@@ -375,7 +447,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                         || CourseSchedule.CourseScheduleType.HIGH.equals(c.getType()))
                 .map(CourseSchedule::getId).collect(Collectors.toList());
 
-        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(needStudentAttendanceCourseScheduleIds);
+        List<StudentAttendance> studentAttendances = null;
+        if(!CollectionUtils.isEmpty(needStudentAttendanceCourseScheduleIds)){
+            studentAttendances = studentAttendanceDao.findByCourseIds(needStudentAttendanceCourseScheduleIds);
+        }
         Map<Long, Long> courseNormalStudentsMap = new HashMap<>();
         if(!CollectionUtils.isEmpty(studentAttendances)){
             courseNormalStudentsMap =studentAttendances.stream()
@@ -489,52 +564,65 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 }
             }
 
-            if(CollectionUtils.isEmpty(courseTeacherAttendances)||!isCallName){
-                //无签到记录或者未点名扣除全部课酬
+            TeacherAttendance teacherAttendance = null;
+            if(!CollectionUtils.isEmpty(courseTeacherAttendances)){
+                teacherAttendance = courseTeacherAttendances.get(0);
+            }
+
+            if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignInStatus())){
+                //无签到记录扣除全部课酬
                 deductCost = deductCost.add(teacherSalary);
-                deductReasons.add("无签到记录扣除全部课酬");
-            }else{
-                TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
-                if(Objects.isNull(teacherAttendance.getSignInStatus())){
-                    //未签到扣除全部课酬
+                deductReasons.add("未签到扣除全部课酬");
+            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
+                int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
+                int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
+                if(signCourseTimeBetween>=0&&signCourseTimeBetween<20){
+                    //未提前20分钟打卡扣除50元
+                    deductCost = deductCost.add(new BigDecimal(50));
+                    deductReasons.add("未提前20分钟打卡扣除50元");
+                }else if(signCourseTimeBetween<0&&signCourseTimeBetween>-30){
+                    //迟到30分钟内扣除一半课酬
+                    deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
+                    deductReasons.add("迟到30分钟内扣除一半课酬");
+                }else if(signCourseTimeBetween<=-30){
+                    //迟到30分钟及以上扣除全部课酬
                     deductCost = deductCost.add(teacherSalary);
-                    deductReasons.add("未签到扣除全部课酬");
-                }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
-                    int signCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignInTime(), courseSchedule.getStartClassTime());
-                    int signCourseTimeBetween = signCourseTimeBetweenSeconds/60;
-                    if(signCourseTimeBetween>=0&&signCourseTimeBetween<20){
-                        //未提前20分钟打卡扣除50元
-                        deductCost = deductCost.add(new BigDecimal(50));
-                        deductReasons.add("未提前20分钟打卡扣除50元");
-                    }else if(signCourseTimeBetween<0&&signCourseTimeBetween>-30){
-                        //迟到30分钟内扣除一半课酬
-                        deductCost = deductCost.add(teacherSalary.divide(new BigDecimal(2)));
-                        deductReasons.add("迟到30分钟内扣除一半课酬");
-                    }else if(signCourseTimeBetween<=-30){
-                        //迟到30分钟及以上扣除全部课酬
-                        deductCost = deductCost.add(teacherSalary);
-                        deductReasons.add("迟到30分钟及以上扣除全部课酬");
-                    }
+                    deductReasons.add("迟到30分钟及以上扣除全部课酬");
+                }else{
+                    //其他,例如签到经纬度不在范围内
+                    deductCost = deductCost.add(new BigDecimal(50));
+                    deductReasons.add("经纬度不在范围内扣除50元");
                 }
+            }
 
-                if((Objects.isNull(teacherAttendance.getSignOutStatus())||YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus()))&&isCallName){
-                    //异常签退或者未签退,但是正常点名扣除50元课酬
+            if(Objects.isNull(teacherAttendance)||!isCallName||Objects.isNull(teacherAttendance.getSignOutStatus())){
+                //未签退或者未点名扣除全部课酬
+                deductCost = deductCost.add(teacherSalary);
+                deductReasons.add("未签退或者未点名扣除全部课酬");
+            }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
+                int signOutCourseTimeBetweenSeconds = DateUtil.secondsBetween(teacherAttendance.getSignOutTime(), courseSchedule.getEndClassTime());
+                int signOutCourseTimeBetween = signOutCourseTimeBetweenSeconds/60;
+                if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
+                    //早退
+                    deductCost = deductCost.add(teacherSalary);
+                    deductReasons.add("早退扣除全部课酬");
+                }else if(isCallName){
+                    //异常签退,但是正常点名扣除50元课酬
                     deductCost = deductCost.add(new BigDecimal(50));
-                    deductReasons.add("异常签退或者未签退,但是正常点名扣除50元课酬");
+                    deductReasons.add("异常签退,但是正常点名扣除50元课酬");
                 }
-
             }
 
             BigDecimal finalSalary = teacherSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
             if(BigDecimal.ZERO.compareTo(deductCost)<0){
                 deductReasons.add("扣除总费用:" + deductCost);
+                courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons, ";"));
             }
 
             //更新教师结算信息
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
             courseScheduleTeacherSalary.setSettlementTime(now);
-            courseScheduleTeacherSalary.setDeductionReason(org.apache.commons.lang3.StringUtils.join(deductReasons, ";"));
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);
         }
     }
@@ -737,10 +825,9 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             List<Map<Long, BigDecimal>> coursePaymentMaps = courseScheduleStudentPaymentDao.findCoursePayment(courseScheduleIds);
             Map<Long, BigDecimal> coursePaymentMap = MapUtil.convertIntegerMap(coursePaymentMaps);
             for (TeacherCourseSalaryDetail4WebDto teacherCourseSalaryDetail4WebDto : dataList) {
+                teacherCourseSalaryDetail4WebDto.setFinalSalary(teacherCourseSalaryDetail4WebDto.getActualSalary());
                 if(Objects.nonNull(teacherCourseSalaryDetail4WebDto.getReduceSalary())){
-                    teacherCourseSalaryDetail4WebDto.setFinalSalary(teacherCourseSalaryDetail4WebDto.getActualSalary().subtract(teacherCourseSalaryDetail4WebDto.getReduceSalary()));
-                }else{
-                    teacherCourseSalaryDetail4WebDto.setFinalSalary(teacherCourseSalaryDetail4WebDto.getActualSalary());
+                    teacherCourseSalaryDetail4WebDto.setActualSalary(teacherCourseSalaryDetail4WebDto.getActualSalary().add(teacherCourseSalaryDetail4WebDto.getReduceSalary()));
                 }
                 BigDecimal paymentPrice = coursePaymentMap.get(teacherCourseSalaryDetail4WebDto.getCourseScheduleId());
                 teacherCourseSalaryDetail4WebDto.setActualReceipts(paymentPrice);
@@ -799,9 +886,6 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<CourseTeacherSalaryStatisticsDto> teacherMonthSalarys = courseScheduleTeacherSalaryDao.getTeacherMonthSalarys(teacherId, year);
         BigDecimal totalSalary = BigDecimal.ZERO;
         for (CourseTeacherSalaryStatisticsDto teacherMonthSalary : teacherMonthSalarys) {
-            if(Objects.nonNull(teacherMonthSalary.getTotalReduceSalary())){
-                teacherMonthSalary.setTotalActualSalary(teacherMonthSalary.getTotalActualSalary().subtract(teacherMonthSalary.getTotalReduceSalary()));
-            }
             totalSalary = totalSalary.add(teacherMonthSalary.getTotalActualSalary());
         }
         Map<String, Object> result=new HashMap<>();

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

@@ -22,7 +22,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,19 +55,30 @@ import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 import com.ym.mec.biz.dal.dto.CalenderPushDto;
 import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
-import com.ym.mec.biz.dal.dto.CourseTimeDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDetailDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDto;
 import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDto.MusicGroupPaymentDateRange;
+import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
+import com.ym.mec.biz.dal.entity.MusicGroupOrganizationCourseSettings;
+import com.ym.mec.biz.dal.entity.MusicGroupOrganizationCourseSettingsDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentClassAdjust;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.OrganizationCourseUnitPriceSettings;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
 import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderDetailService;
@@ -171,8 +181,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		List<MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = musicGroupPaymentCalenderDto.getMusicGroupPaymentDateRangeList();
 
-		if ((paymentType == PaymentType.ADD_COURSE || payUserType == PayUserType.SCHOOL) && musicGroupPaymentDateRangeList.size() > 1) {
-			throw new BizException("[临时加课]和[学校缴费]不支持多周期缴费");
+		if ((paymentType == PaymentType.ADD_COURSE) && musicGroupPaymentDateRangeList.size() > 1) {
+			throw new BizException("[临时加课]不支持多周期缴费");
 		}
 
 		MusicGroup musicGroup = musicGroupDao.getLocked(musicGroupId);
@@ -491,8 +501,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 
 		List<MusicGroupPaymentDateRange> musicGroupPaymentDateRangeList = musicGroupPaymentCalenderDto.getMusicGroupPaymentDateRangeList();
 
-		if ((paymentType == PaymentType.ADD_COURSE || payUserType == PayUserType.SCHOOL) && musicGroupPaymentDateRangeList.size() > 1) {
-			throw new BizException("[临时加课]和[学校缴费]不支持多周期缴费");
+		if ((paymentType == PaymentType.ADD_COURSE) && musicGroupPaymentDateRangeList.size() > 1) {
+			throw new BizException("[临时加课]不支持多周期缴费");
 		}
 
 		MusicGroup musicGroup = musicGroupDao.getLocked(musicGroupId);

+ 11 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -307,6 +307,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         sysUser.setUpdateTime(date);
         teacherDao.updateUser(sysUser);
 
+        studentRegistration.setCurrentGradeDate(date);
         studentRegistration.setActualSubjectId(studentRegistration.getSubjectId());
         studentRegistration.setCreateTime(date);
         studentRegistration.setUpdateTime(date);
@@ -442,15 +443,15 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //增加缴费学生数
         boolean updateFlag = false;
         for (int i = 0; i < 10; i++) {
-            if (amount.compareTo(BigDecimal.ZERO) == 0) { //0元订单不增加报名人数
-                updateFlag = true;
-                break;
-            }
+//            if (amount.compareTo(BigDecimal.ZERO) == 0) { //0元订单不增加报名人数
+//                updateFlag = true;
+//                break;
+//            }
             MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
             int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
             musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
             if (studentRegistration.getTemporaryCourseFee() == null && musicOneSubjectClassPlan.getPaidStudentNum() > musicOneSubjectClassPlan.getExpectedStudentNum()) {
-                throw new BizException("乐团人数已满");
+                throw new BizException("乐团该声部人数暂时已满,请稍后再试");
             }
             int count = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
             if (count >= 1) {
@@ -926,7 +927,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             List<StudentPaymentOrderDetail> orderDetails = studentPaymentOrderDetailService.getOrderDetail(studentPaymentOrder.getId());
 
             List<StudentPaymentOrderDetail> allDetails = studentPaymentOrderDetailDao.getOrderDetailByOrderId(studentPaymentOrder.getId());
-            BigDecimal courseFee = allDetails.stream().filter(o -> !o.getType().getCode().equals("MUSICAL")).filter(o -> !o.getType().getCode().equals("ACCESSORIES")).map(o -> o.getPrice().subtract(o.getRemitFee()==null?BigDecimal.ZERO:o.getRemitFee()))
+            BigDecimal courseFee = allDetails.stream().filter(o -> !o.getType().getCode().equals("MUSICAL")).filter(o -> !o.getType().getCode().equals("ACCESSORIES")).map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
             //累加充值金额
@@ -1032,12 +1033,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         //减去缴费人数
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
-            if (studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
-                musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
-                updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
-                if (updateCount <= 0) {
-                    throw new BizException("减去缴费人数失败");
-                }
+            musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
+            updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
+            if (updateCount <= 0) {
+                throw new BizException("减去缴费人数失败");
             }
             if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "报名缴费失败");

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

@@ -631,6 +631,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		result.setType(courseSchedule.getType());
 		result.setTeacherName(teacherDao.queryNameById(courseSchedule.getActualTeacherId()));
 		result.setAttendClassTime(teacherAttendanceDao.getAttendClassTime(courseScheduleId));
+		result.setSchool(schoolDao.get(courseSchedule.getSchoolId()));
 		if(teacherAttendance != null){
 			result.setIsSignIn(Objects.isNull(teacherAttendance.getSignInStatus())?3:teacherAttendance.getSignInStatus().getCode());
 			result.setIsSignOut(Objects.isNull(teacherAttendance.getSignOutStatus())?3:teacherAttendance.getSignOutStatus().getCode());

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

@@ -555,7 +555,7 @@
             LEFT JOIN school s ON cs.schoole_id_=s.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         <if test="classGroupIds != null and organIdList!=null">
             AND cs.class_group_id_ IN
             <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
@@ -582,7 +582,7 @@
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND cs.id_ IS NOT NULL
         <if test="type!=null">
             AND cg.group_type_ = #{type}
@@ -623,7 +623,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
         AND cssp.user_id_ = #{studentId}
         <if test="quitClassGroupIds != null and quitClassGroupIds.size()>0">
@@ -667,7 +667,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND cs.class_date_ = DATE_FORMAT(#{classDate},'%Y%m%d')
         <if test="type!=null and type!=''">
             AND cs.type_=#{type}
@@ -754,7 +754,7 @@
                  LEFT JOIN teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = #{teacherId}
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cs.new_course_id_ IS NULL
+            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
           AND cs.class_date_ = DATE_FORMAT(#{classDate}, '%Y%m%d')
           AND csts.user_id_ = #{teacherId}
           AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW()
@@ -885,7 +885,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND cssp.user_id_ = #{studentId}
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
@@ -910,7 +910,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND csts.user_id_ = #{teacherId}
         <if test="month==null">
             AND DATE_FORMAT( NOW(), '%Y%m' ) = DATE_FORMAT( cs.class_date_, '%Y%m' )
@@ -962,7 +962,7 @@
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND CONCAT(cs.class_date_,' ',cs.start_class_time_) &lt; NOW()
         AND csts.user_id_ = #{teacherId}
         AND cg.del_flag_ = 0
@@ -983,7 +983,7 @@
             LEFT JOIN teacher t ON cs.actual_teacher_id_=t.id_
         WHERE
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
-            AND cs.new_course_id_ IS NULL
+            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND cs.class_group_id_ IN
             <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
                 #{classGroupId}
@@ -1020,7 +1020,7 @@
             AND cs.status_ != 'NOT_START'
             AND cs.del_flag_ = 0
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cs.new_course_id_ IS NULL
+            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             <if test="teachMode!=null and teachMode!=''">
                 AND cs.teach_mode_=#{teachMode}
             </if>
@@ -1083,7 +1083,7 @@
                  LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cs.new_course_id_ IS NULL
+            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND cs.status_ = 'NOT_START'
             AND cgsm.user_id_ = #{userId}
             AND cs.class_date_ = DATE_FORMAT(#{date}, '%Y%m%d')
@@ -1363,7 +1363,7 @@
         <where>
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-            AND cs.new_course_id_ IS NULL
+            AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND cs.class_group_id_ = #{classGroupId}
             <if test="userId != null">
                 AND csts.user_id_ = #{userId}
@@ -1791,7 +1791,7 @@
         from course_schedule cs
                  right join course_schedule_teacher_salary cssp on cs.id_ = cssp.course_schedule_id_
                  left join sys_user u on u.id_ = cssp.user_id_
-        where cs.new_course_id_ IS NULL AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY))
+        where (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND class_date_ = date(DATE_ADD(now(), INTERVAL 1 DAY))
         group by cssp.user_id_
     </select>
 
@@ -1858,7 +1858,7 @@
                cs.leave_student_num_,
                cs.schoole_id_
         FROM course_schedule cs
-        WHERE cs.new_course_id_ IS NULL
+        WHERE (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
           AND cs.class_date_ BETWEEN #{startDate} AND #{endDate}
           AND cs.group_type_ = 'MUSIC'
           AND (cs.del_flag_ IS NULL OR cs.del_flag_ = 0)
@@ -2235,7 +2235,7 @@
         <if test="teacherId != null">
             AND cs.actual_teacher_id_ = #{teacherId}
         </if>
-        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND cs.new_course_id_ IS NULL
+        AND cs.status_ = 'NOT_START' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         GROUP BY cs.class_group_id_
     </select>
 

+ 8 - 3
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -266,8 +266,11 @@
 	</select>
     <select id="findSomeDayAgoTeacherCourseSalaryNoSettlement" resultMap="CourseScheduleTeacherSalary">
 		SELECT
-		cs.class_date_,
-		csts.*
+			cs.class_date_,
+			CONCAT(cs.class_date_	,' ',cs.start_class_time_) start_class_time_,
+			CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) end_class_time_,
+			cs.teach_mode_,
+			csts.*
 		FROM
 		course_schedule_teacher_salary csts
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
@@ -295,6 +298,8 @@
     <select id="findTeacherCourseSalaryNoSettlement" resultMap="CourseScheduleTeacherSalary">
 		SELECT
 		cs.class_date_,
+		CONCAT(cs.class_date_	,' ',cs.start_class_time_) start_class_time_,
+		CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) end_class_time_,
 		csts.*
 		FROM
 		course_schedule_teacher_salary csts
@@ -919,7 +924,7 @@
 		WHERE
 			( cs.del_flag_ IS NULL OR cs.del_flag_ = 0 )
 			AND (cs.is_lock_=0 OR cs.is_lock_ IS NULL)
-			AND cs.new_course_id_ IS NULL
+			AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
 			AND csts.settlement_time_ IS NOT NULL
 			AND csts.user_id_ = #{teacherId}
 			AND DATE_FORMAT( cs.class_date_, '%Y' ) = #{year}

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

@@ -453,6 +453,7 @@
         <result property="phone" column="parents_phone_"/>
         <result property="gender" column="gender_"/>
         <result property="currentGrade" column="current_grade_"/>
+        <result property="currentGradeDate" column="current_grade_date_"/>
         <result property="currentClass" column="current_class_"/>
         <result property="subjectName" column="subject_name_"/>
         <result property="studentStatus" column="student_status_"/>
@@ -466,7 +467,7 @@
         <result property="paymentPeriodList" column="payment_period_list_"/>
     </resultMap>
     <select id="queryMusicGroupStudent" resultMap="MusicGroupStudentsDto">
-        SELECT sr.user_id_,su.username_ real_name_,su.gender_,su.phone_ parents_phone_,sr.current_grade_,
+        SELECT sr.user_id_,su.username_ real_name_,su.gender_,su.phone_ parents_phone_,sr.current_grade_,sr.current_grade_date_,
         sr.current_class_,sr.music_group_status_ student_status_,CASE WHEN sr.payment_status_ = 2 THEN 1 ELSE 0 END payment_status_,
         s.name_ subject_name_,sr.music_group_id_,case when su.password_ is null then 0 else 1 end isActive_,
         IF(DATE_FORMAT(sr.create_time_,'%Y-%m-%d') > DATE_FORMAT(mg.payment_expire_date_,'%Y-%m-%d'),1,0) is_new_student_

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

@@ -13,6 +13,8 @@
         <result column="id_card_no_" property="idCardNo"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="current_grade_" property="currentGrade"/>
+        <result column="current_grade_date_" property="currentGradeDate"/>
+        <result column="current_grade_" property="currentGrade"/>
         <result column="current_class_" property="currentClass"/>
         <result column="subject_id_" property="subjectId"/>
         <result column="actual_subject_id_" property="actualSubjectId"/>
@@ -67,6 +69,7 @@
         <result column="name_" property="name"/>
         <result column="parents_name_" property="parentsName"/>
         <result column="current_grade_" property="grade"/>
+        <result column="current_grade_date_" property="gradeDate"/>
         <result column="current_class_" property="clazz"/>
         <result column="actual_subject_id_" property="subject.id"/>
         <result column="subject_name_" property="subject.name"/>
@@ -109,6 +112,7 @@
             <if test="name!=null">name_,</if>
             <if test="musicGroupId!=null">music_group_id_,</if>
             <if test="currentGrade!=null">current_grade_,</if>
+            <if test="currentGradeDate!=null">current_grade_date_,</if>
             <if test="currentClass!=null">current_class_,</if>
             <if test="subjectId!=null">subject_id_,</if>
             <if test="actualSubjectId!=null">actual_subject_id_,</if>
@@ -133,6 +137,7 @@
             <if test="name!=null">#{name},</if>
             <if test="musicGroupId!=null">#{musicGroupId},</if>
             <if test="currentGrade!=null">#{currentGrade},</if>
+            <if test="currentGradeDate!=null">#{currentGradeDate},</if>
             <if test="currentClass!=null">#{currentClass},</if>
             <if test="subjectId!=null">#{subjectId},</if>
             <if test="actualSubjectId!=null">#{actualSubjectId},</if>
@@ -171,6 +176,9 @@
             <if test="currentGrade != null">
                 current_grade_ = #{currentGrade},
             </if>
+            <if test="currentGradeDate != null">
+                current_grade_date_ = #{currentGradeDate},
+            </if>
             <if test="currentClass != null">
                 current_class_ = #{currentClass},
             </if>
@@ -275,6 +283,7 @@
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentApplyDetailDto" id="studentApplyDetail">
         <result column="current_grade_" property="currentGrade"/>
+        <result column="current_grade_date_" property="currentGradeDate"/>
         <result column="current_class_" property="currentClass"/>
         <result column="is_allow_adjust_" property="isAllowAdjust" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="parents_name_" property="parentsName"/>
@@ -290,7 +299,7 @@
         <result column="remark_" property="remark"/>
     </resultMap>
     <select id="queryStudentDetailPage" resultMap="studentApplyDetail">
-        SELECT sr.id_, sr.user_id_,su.username_ username_,sr.parents_name_,sr.current_class_,sr.current_grade_,
+        SELECT sr.id_, sr.user_id_,su.username_ username_,sr.parents_name_,sr.current_class_,sr.current_grade_,sr.current_grade_date_,
         su.gender_,sr.is_allow_adjust_, s.name_ subject_name_,ss.name_
         actual_subject_name_,su.phone_ parents_phone_,sr.payment_status_,sr.remark_,sr.actual_subject_id_
         FROM student_registration sr

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

@@ -430,7 +430,7 @@
         FROM course_schedule cs RIGHT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
         LEFT JOIN sys_user u on ta.teacher_id_ = u.id_
         WHERE ta.sign_out_status_ IS NULL
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) &lt;= DATE_SUB(now(),INTERVAL #{minutes} MINUTE) AND cs.del_flag_ = 0
         AND cs.group_type_ = 'MUSIC'
     </select>
@@ -489,7 +489,7 @@
         SELECT DISTINCT ta.teacher_id_ FROM teacher_attendance ta
         LEFT JOIN course_schedule cs ON cs.id_ = ta.course_schedule_id_
         WHERE cs.class_date_ = #{format}
-        AND cs.new_course_id_ IS NULL
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         AND ta.teacher_id_ = cs.actual_teacher_id_ AND CONCAT(cs.class_date_,' ',cs.end_class_time_) &lt; NOW()
         AND (ta.sign_in_status_ IS NULL OR ta.sign_in_status_ = 0 OR ta.sign_out_status_ IS NULL OR ta.sign_out_status_ = 0)
     </select>