Browse Source

Merge remote-tracking branch 'origin/master'

周箭河 5 năm trước cách đây
mục cha
commit
3a4b21795e

+ 10 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysMenu.java

@@ -69,6 +69,16 @@ public class SysMenu {
 	@ApiModelProperty(value = "子节点列表",required = false)
 	private List<SysMenu> sysMenus;
 
+	private String memo;
+
+	public String getMemo() {
+		return memo;
+	}
+
+	public void setMemo(String memo) {
+		this.memo = memo;
+	}
+
 	public String getParentPermission() {
 		return parentPermission;
 	}

+ 6 - 2
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysMenuMapper.xml

@@ -23,6 +23,7 @@
         <result column="update_time_" property="updateTime"/>
         <result column="del_flag_" property="delFlag"/>
         <result column="hidden_" property="hid"/>
+        <result column="memo_" property="memo"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -39,8 +40,8 @@
     <insert id="insert" parameterType="com.ym.mec.auth.api.entity.SysMenu" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO sys_menu
-        (id_,name_,permission_,path_,parent_id_,icon_,component_,sort_,type_,create_time_,update_time_,hidden_,parent_permission_)
-        VALUES(#{id},#{name},#{permission},#{path},#{parentId},#{icon},#{component},#{sort},#{type},now(),now(),#{hid},#{parentPermission})
+        (id_,name_,permission_,path_,parent_id_,icon_,component_,sort_,type_,create_time_,update_time_,hidden_,parent_permission_,memo_)
+        VALUES(#{id},#{name},#{permission},#{path},#{parentId},#{icon},#{component},#{sort},#{type},now(),now(),#{hid},#{parentPermission},#{memo})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -86,6 +87,9 @@
             <if test="hid != null">
                 hidden_ = #{hid},
             </if>
+            <if test="memo != null">
+                memo_ = #{memo},
+            </if>
         </set>
         WHERE id_ = #{id}
     </update>

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1530,4 +1530,12 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseSchedule> queryNoStartCourseByTeacherId(@Param("classGroupIds") String classGroupIds, @Param("teacherId") Integer teacherId, @Param("teacherRole") String teacherRole);
+
+    /**
+     * 当前班级是否有未开始的课程
+     * @param classGroupIds
+     * @param teacherId
+     * @return
+     */
+    List<Map<Integer, Integer>> queryHasReatClass(@Param("classGroupIds") Set<String> classGroupIds, @Param("teacherId") String teacherId);
 }

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

@@ -120,6 +120,17 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	int batchUpdate(@Param("courseScheduleTeacherSalaries") List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries);
 
 	/**
+	 * @describe 更新指定课程的课酬
+	 * @author Joburgess
+	 * @date 2020.06.10
+	 * @param courseIds:
+	 * @param salary:
+	 * @return int
+	 */
+	int batchUpdateCourseSalarys(@Param("courseIds") List<Long> courseIds,
+								 @Param("salary") BigDecimal salary);
+
+	/**
 	 * @describe 根据课程编号与老师编号删除对应教师课酬记录
 	 * @author Joburgess
 	 * @date 2019/12/2

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

@@ -1,105 +1,15 @@
 package com.ym.mec.biz.service.impl;
 
-import static com.ym.mec.biz.dal.enums.GroupType.COMM;
-import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
-import static com.ym.mec.biz.dal.enums.GroupType.VIP;
-
-import java.math.BigDecimal;
-import java.time.Duration;
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-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;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.ClassGroup4MixDto;
-import com.ym.mec.biz.dal.dto.ClassGroupImGroupDto;
-import com.ym.mec.biz.dal.dto.ClassGroupTeacherMapDto;
-import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
-import com.ym.mec.biz.dal.dto.CourseListDto;
-import com.ym.mec.biz.dal.dto.CourseTimeDto;
-import com.ym.mec.biz.dal.dto.HighClassGroupDto;
-import com.ym.mec.biz.dal.dto.MusicGroupClassGroupDto;
-import com.ym.mec.biz.dal.dto.MusicGroupCourseScheduleDto;
-import com.ym.mec.biz.dal.dto.StudentAttendanceViewDto;
-import com.ym.mec.biz.dal.dto.StudentPayInfoDto;
-import com.ym.mec.biz.dal.dto.SuperClassGroupDto;
-import com.ym.mec.biz.dal.dto.TeacherClassGroupDto;
-import com.ym.mec.biz.dal.dto.TeacherClassHeadInfo;
-import com.ym.mec.biz.dal.dto.TeacherMusicClassInfoDto;
-import com.ym.mec.biz.dal.dto.TeacherVipClassInfoDto;
-import com.ym.mec.biz.dal.dto.UserMusicGroupQueryInfo;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.ClassGroupRelation;
-import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
-import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
-import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.CoursesGroup;
-import com.ym.mec.biz.dal.entity.Group;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
-import com.ym.mec.biz.dal.entity.PracticeGroup;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SysConfig;
-import com.ym.mec.biz.dal.entity.Teacher;
-import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
-import com.ym.mec.biz.dal.entity.VipGroup;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.page.ClassGroupQueryInfo;
-import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
-import com.ym.mec.biz.dal.page.TeacherMusicClassQueryInfo;
-import com.ym.mec.biz.dal.page.VipClassQueryInfo;
-import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
-import com.ym.mec.biz.service.ClassGroupRelationService;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
-import com.ym.mec.biz.service.CourseScheduleService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.SubjectService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImGroupMember;
@@ -115,6 +25,20 @@ import com.ym.mec.jiari.JiaRiFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateConvertor;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.ym.mec.biz.dal.enums.GroupType.*;
 
 @Service
 public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup> implements ClassGroupService {
@@ -618,9 +542,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             HashMap<String, Object> param = new HashMap<>();
             param.put("teacherId", queryInfo.getSearch());
             param.put("attendanceStatus", YesOrNoEnum.YES);
+            Set<String> classGroupIds = dataList.stream().map(e -> e.getClassGroupIds()).collect(Collectors.toSet());
+            Map<Integer,Long> hasRestClassMap = MapUtil.convertIntegerMap(courseScheduleDao.queryHasReatClass(classGroupIds,queryInfo.getSearch()));
+            int teacherPersonalAttendancesCount = teacherAttendanceDao.getTeacherPersonalAttendancesCount(param);
             dataList.forEach(e -> {
                 param.put("musicGroupId", e.getMusicGroupId());
-                e.setAttendanceNum(teacherAttendanceDao.getTeacherPersonalAttendancesCount(param));
+                e.setAttendanceNum(teacherPersonalAttendancesCount);
+                e.setHasRestClass(hasRestClassMap.get(Integer.parseInt(e.getClassGroupIds())).intValue());
             });
         }
         if (count == 0) {

+ 45 - 32
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -47,8 +47,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
-import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
+import static com.ym.mec.biz.dal.enums.GroupType.*;
 import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
 
 @Service
@@ -2076,6 +2075,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 }
             }
         }
+        if(groupType == VIP){
+			VipGroup vipGroup = vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
+			try {
+				Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
+						courseSchedules.get(0).getActualTeacherId(),
+						vipGroup.getOnlineClassesUnitPrice(),
+						vipGroup.getOfflineClassesUnitPrice(),
+						false,true);
+				courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds,
+						vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?costInfo.get("offlineTeacherSalary"):costInfo.get("onlineTeacherSalary"));
+			} catch (Exception e) {
+				TeacherDefaultVipGroupSalary tdvs = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(courseSchedules.get(0).getActualTeacherId(),vipGroup.getVipGroupCategoryId());
+				if (tdvs == null) {
+					throw new BizException("老师[]没有设置默认课酬,请先设置", courseSchedules.get(0).getActualTeacherId());
+				}
+				courseScheduleTeacherSalaryDao.batchUpdateCourseSalarys(courseScheduleIds,
+						vipGroupCourseAdjustInfo.getTeachMode().equals(TeachModeEnum.OFFLINE)?tdvs.getOfflineClassesSalary():tdvs.getOnlineClassesSalary());
+			}
+		}
+
         courseScheduleDao.batchUpdate(courseSchedules);
         classGroupService.updateClassGroupInfo(classGroup.getId());
         if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
@@ -2465,10 +2484,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<TeacherAttendance> teacherAttendanceList = teacherAttendanceMap.get(courseScheduleId);
 
 			List<Integer> oldTeacherIdList = teacherAttendanceList.stream().map(TeacherAttendance::getTeacherId).distinct().collect(Collectors.toList());
-
-			Set<Integer> newTeacherIdList = new HashSet(newCourseSchedule.getTeachingTeacherIdList());
-			newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
-			List<Integer> integerArrayList = new ArrayList<>(newTeacherIdList);
+            List<Integer> newTeacherIdList = new ArrayList<>();
+            newTeacherIdList.addAll(newCourseSchedule.getTeachingTeacherIdList());
+            newTeacherIdList.add(newCourseSchedule.getActualTeacherId());
 
 			if (newCourseSchedule.getStatus() != CourseStatusEnum.OVER) {
 				// 清理原来考勤
@@ -2529,7 +2547,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			int newMinutes = DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), newCourseSchedule.getEndClassTime());
 
 			// 如果修改了老师、课程类型、课程时长、教学模式,需要修改课酬
-			if (!ListUtil.isEquals(oldTeacherIdList, integerArrayList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
+			if (!ListUtil.isEquals(oldTeacherIdList, newTeacherIdList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
 					|| newCourseSchedule.getTeachMode() != oldCourseSchedule.getTeachMode() || oldMinutes != newMinutes) {
 
 				Map<Integer, Teacher> teacherMap = null;
@@ -2537,11 +2555,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 				if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
 					// 所有教师列表
-					List<Teacher> teachers = teacherDao.findByTeacherIds(integerArrayList);
+					List<Teacher> teachers = teacherDao.findByTeacherIds(newTeacherIdList);
 					teacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, teacher -> teacher));
 
 					// 所有老师默认乐团课酬
-					List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(integerArrayList);
+					List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(newTeacherIdList);
 					for (TeacherDefaultMusicGroupSalary tdms : teacherDefaultMusicGroupSalaries) {
 						Map<CourseScheduleType, TeacherDefaultMusicGroupSalary> map = musicGroupSalaryMap.get(tdms.getUserId());
 						if (map == null) {
@@ -2679,29 +2697,24 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						if (vipGroup == null) {
 							throw new BizException("课程[{}]记录存在异常,请联系管理员", courseScheduleId);
 						}
-						TeacherDefaultVipGroupSalary tdvs = map.get(vipGroup.getVipGroupCategoryId());
-						if (tdvs == null) {
-							throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
-						}
-						Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
-								teacherId,
-								vipGroup.getOnlineClassesUnitPrice(),
-								vipGroup.getOfflineClassesUnitPrice(),
-								false,true);
-						if (newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE) {
-							ts.setExpectSalary(costInfo.get("offlineTeacherSalary"));
-						} else {
-							ts.setExpectSalary(costInfo.get("onlineTeacherSalary"));
+						try {
+							Map<String, BigDecimal> costInfo = vipGroupService.countVipGroupPredictFee(vipGroup,
+									teacherId,
+									vipGroup.getOnlineClassesUnitPrice(),
+									vipGroup.getOfflineClassesUnitPrice(),
+									false,true);
+							if (newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE) {
+								ts.setExpectSalary(costInfo.get("offlineTeacherSalary"));
+							} else {
+								ts.setExpectSalary(costInfo.get("onlineTeacherSalary"));
+							}
+						} catch (Exception e) {
+							TeacherDefaultVipGroupSalary tdvs = map.get(vipGroup.getVipGroupCategoryId());
+							if (tdvs == null) {
+								throw new BizException("老师[]没有设置默认课酬,请先设置", teacherId);
+							}
+							ts.setExpectSalary(newCourseSchedule.getTeachMode() == TeachModeEnum.OFFLINE?tdvs.getOfflineClassesSalary():tdvs.getOnlineClassesSalary());
 						}
-
-//						ts.setExpectSalary(new BigDecimal(0));
-//						Map<Integer, CourseScheduleTeacherSalary> tsMap = courseScheduleTeacherSalaryMap.get(courseScheduleId);
-//						if(tsMap != null){
-//							CourseScheduleTeacherSalary oldTS = tsMap.get(teacherId);
-//							if(oldTS != null){
-//								ts.setExpectSalary(oldTS.getExpectSalary());
-//							}
-//						}
 					} else if (newCourseSchedule.getGroupType() == PRACTICE) {
 						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
 								.queryByUserId(teacherId);
@@ -3881,7 +3894,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
 		if(practiceGroup.getType() != TRIAL){
-			if(practiceGroup.getType() == FREE){
+			if(practiceGroup.getType() != FREE){
 				List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 				if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 					throw new BizException("请设置老师默认课酬");

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

@@ -382,7 +382,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             List<CourseScheduleComplaints> courseStudentComplaints = complaintsGroupByCourse.get(courseScheduleTeacherSalary.getCourseScheduleId());
 
             //如果存在投诉记录,需要扣除相应费用
-            if (Objects.nonNull(courseStudentComplaints)) {
+            /*if (Objects.nonNull(courseStudentComplaints)) {
                 //获取审批中的投诉
                 List<CourseScheduleComplaints> auditIng = courseStudentComplaints.stream().filter(courseScheduleComplaint -> courseScheduleComplaint.getStatus() == AuditStatusEnum.ING).collect(Collectors.toList());
                 if (!CollectionUtils.isEmpty(auditIng)) {
@@ -390,12 +390,12 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     return;
                 }
                 //计算教师责任总占比
-//                double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
-//                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
+                double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
+                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
             } else {
                 //如果没有投诉,则教师和学生的责任占比为0
-//                teacherLiabilityAllratio = new BigDecimal(0);
-            }
+                teacherLiabilityAllratio = new BigDecimal(0);
+            }*/
 
             //教师应扣除费用
             /*BigDecimal deductPrice = avgSalary.multiply(teacherLiabilityAllratio);
@@ -1007,7 +1007,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         BigDecimal totalSalary = BigDecimal.ZERO;
         for (CourseTeacherSalaryStatisticsDto teacherMonthSalary : teacherMonthSalarys) {
             if(Objects.nonNull(teacherMonthSalary.getTotalReduceSalary())){
-                teacherMonthSalary.setTotalActualSalary(teacherMonthSalary.getTotalReduceSalary().subtract(teacherMonthSalary.getTotalReduceSalary()));
+                teacherMonthSalary.setTotalActualSalary(teacherMonthSalary.getTotalActualSalary().subtract(teacherMonthSalary.getTotalReduceSalary()));
             }
             totalSalary = totalSalary.add(teacherMonthSalary.getTotalActualSalary());
         }

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

@@ -3139,5 +3139,15 @@
         WHERE FIND_IN_SET(cs.class_group_id_,#{classGroupIds}) AND csts.teacher_role_ = #{teacherRole}
         AND csts.user_id_ = #{teacherId} AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
     </select>
+    <select id="queryHasReatClass" resultType="java.util.Map">
+        SELECT cgtm.class_group_id_ 'key',CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END 'value'
+        FROM class_group_teacher_mapper cgtm
+        LEFT JOIN course_schedule cs ON cs.class_group_id_ = cgtm.class_group_id_ AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.del_flag_ = 0
+        WHERE cgtm.user_id_ = #{teacherId} AND cgtm.group_type_ = 'MUSIC' AND cgtm.class_group_id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" separator="," open="(" close=")">
+            #{classGroupId}
+        </foreach>
+        GROUP BY cgtm.class_group_id_
+    </select>
 
 </mapper>

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

@@ -477,8 +477,14 @@
 			#{id}
 		</foreach>
 	</update>
+    <update id="batchUpdateCourseSalarys">
+		UPDATE course_schedule_teacher_salary SET expect_salary_ = #{salary} WHERE course_schedule_id_ IN
+		<foreach collection="courseIds" item="courseId" separator="," open="(" close=")">
+			#{courseId}
+		</foreach>
+	</update>
 
-	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
+    <select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
 	<select id="countActualAmount" resultType="java.util.Map">

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

@@ -183,12 +183,10 @@
     </select>
     <select id="findAllByOrgan" resultMap="PracticeGroupDto">
         SELECT pg.*,
-        su.real_name_ teacher_name_,
-        CASE WHEN COUNT(cs.id_) > 0 THEN 1 ELSE 0 END hasRestClass
+        su.real_name_ teacher_name_
         FROM
         practice_group pg
         LEFT JOIN sys_user su ON pg.user_id_ = su.id_
-        LEFT JOIN course_schedule cs ON (FIND_IN_SET(cs.music_group_id_,pg.id_) AND CONCAT(cs.class_date_,' ',cs.start_class_time_) > NOW() AND cs.group_type_ = 'PRACTICE')
         <include refid="practiceGroupQueryCondition"/>
         GROUP BY pg.id_ ORDER BY pg.id_ DESC
         <include refid="global.limit"/>

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

@@ -273,7 +273,8 @@
                 AND sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test="attendanceStatus != null and attendanceStatus == @com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum@TRUANT">
-                AND (sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} OR sa.status_ IS NULL)
+                AND (sa.status_ = #{attendanceStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+                OR (sa.status_ IS NULL AND cs.status_!='NOT_START'))
             </if>
             <if test="classGroupName!=null">
                 AND (cg.name_ LIKE CONCAT("%",#{classGroupName},"%") OR cs.name_ LIKE CONCAT("%",#{classGroupName},"%"))
@@ -294,7 +295,7 @@
             CONCAT(cs.class_date_," ",cs.end_class_time_) course_end_date_,
             cssp.course_schedule_id_,
             su.real_name_ teacher_name_,
-            IF(sa.status_ IS NULL,'TRUANT',sa.status_) status_,
+            IF(sa.status_ IS NULL AND cs.status_!='NOT_START','TRUANT',sa.status_) status_,
             sa.current_class_times_,
             cg.total_class_times_,
             cs.status_ courseStatus,