Pārlūkot izejas kodu

Merge branch 'master' into adapay_delay_1231

周箭河 4 gadi atpakaļ
vecāks
revīzija
d0576593b3

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -172,7 +172,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      *
      * @return
      */
-    List<StudentRegistration> findMusicGroupStudent(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") Integer actualSubjectId);
+    List<StudentRegistration> findMusicGroupStudent(@Param("musicGroupId") String musicGroupId, @Param("actualSubjectId") String actualSubjectId);
 
     /**
      * 查询乐团userIdList的学生

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

@@ -195,7 +195,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      *
      * @return
      */
-    List<StudentRegistration> findMusicGroupStudent(String musicGroupId, Integer actualSubjectId);
+    List<StudentRegistration> findMusicGroupStudent(String musicGroupId, String actualSubjectId);
 
     /**
      * 查询乐团userIdList的学生
@@ -254,7 +254,7 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @param subjectId
      * @return
      */
-    List<StudentRegistration> findMusicGroupStuNoClassType(String musicGroupId, Long classGroupId, ClassGroupTypeEnum type, Integer subjectId);
+    List<StudentRegistration> findMusicGroupStuNoClassType(String musicGroupId, Long classGroupId, ClassGroupTypeEnum type, String subjectIds);
 
     /**
      * 获取乐团下所有学员身上的声部列表

+ 11 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -13,6 +13,8 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -21,22 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dto.ClassGroupStudentInfoDto;
-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.CourseScheduleStudentPayment;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.TeacherDefaultMusicGroupSalary;
 import com.ym.mec.biz.service.ClassGroupRelationService;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupStudentMapperService;
@@ -86,6 +73,8 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
     private CourseScheduleDao courseScheduleDao;
     @Autowired
     private ClassGroupDao classGroupDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
 
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
@@ -410,11 +399,15 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         //线上基础技能班,原始分班人数不能小于3人大于6人
         if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE)) {
-            if (studentIds.size() < 3 && oldNormalStudentIds.size() <= 0) {
-                throw new BizException("线上基础技能班人数不能小于3人");
+            MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+            if (studentIds.size() < 3 && musicGroup.getStatus().equals(MusicGroupStatusEnum.PREPARE)) {
+                throw new BizException("线上基础技能班人数不能s少于3人");
+            }
+            if (studentIds.size() < 3 && !musicGroup.getStatus().equals(MusicGroupStatusEnum.PREPARE) && oldNormalStudentIds.size() <= 0) {
+                throw new BizException("线上基础技能班人数不能少于3人");
             }
             if (studentIds.size() > 6) {
-                throw new BizException("线上基础技能班人数不能大于6人");
+                throw new BizException("线上基础技能班人数不能于6人");
             }
         }
 

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

@@ -210,6 +210,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         Set<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toSet());
 
+        Set<Integer> teacherIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
+        List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
+        Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
+
         //教师签到记录
         List<TeacherAttendance> allTeacherAttendances = teacherAttendanceDao.findByCourseSchedules(new ArrayList<>(courseScheduleIds));
         Map<String, List<TeacherAttendance>> teacherCourseAttendanceMap = allTeacherAttendances.stream().collect(Collectors.groupingBy(ta -> org.apache.commons.lang3.StringUtils.joinWith(":", ta.getCourseScheduleId(), ta.getTeacherId())));
@@ -220,6 +224,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
 
+            Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
+            if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+                courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
+            }
+
             //扣除费用
             BigDecimal deductCost = new BigDecimal(0);
             List<String> deductReasons = new ArrayList<>();
@@ -289,6 +298,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         // 查询需要修改的课酬记录
         List<TeacherVipSalaryDto> teacherSalaryList = courseScheduleTeacherSalaryDao.queryOnlineCourseByGroupType(startDate, endDate);
 
+        Set<Integer> teacherIds = teacherSalaryList.stream().map(TeacherVipSalaryDto::getUserId).collect(Collectors.toSet());
+        List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
+        Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
+
         for (TeacherVipSalaryDto ts : teacherSalaryList) {
             // 修复兼职老师不管1v?和全职老师1vn的课酬为系统默认课酬(不管线上还是线下课)
             if (ts.getTeacherJobNature() != JobNatureEnum.FULL_TIME || !org.apache.commons.lang3.StringUtils.equalsIgnoreCase("1v1", ts.getVipGroupCategoryName())) {
@@ -330,6 +343,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         //处理课酬信息
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
 
+            Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
+            if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+                courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
+            }
+
             //扣除费用
             BigDecimal deductCost = new BigDecimal(0);
             List<String> deductReasons = new ArrayList<>();
@@ -483,6 +501,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalaries = teacherDefaultMusicGroupSalaryDao.findByTeacher(allTeacherIds);
         Map<CourseSchedule.CourseScheduleType, List<TeacherDefaultMusicGroupSalary>> teacherDefaultMusicGroupSalariesGroupByCourseType = teacherDefaultMusicGroupSalaries.stream().collect(Collectors.groupingBy(TeacherDefaultMusicGroupSalary::getCourseScheduleType));
 
+        Set<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
+        List<Teacher> teachers = teacherDao.findByTeacherIds(new ArrayList<>(teacherIds));
+        Map<Integer, Teacher> idTeacherMap = teachers.stream().collect(Collectors.toMap(Teacher::getId, t -> t, (t1, t2) -> t1));
+
         //计算课酬
         for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
             //当前课酬对应的课程信息
@@ -491,6 +513,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             //教师课酬
             BigDecimal teacherSalary = new BigDecimal(0);
 
+            Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
+
             if(CourseSchedule.CourseScheduleType.MUSIC_NETWORK.equals(courseSchedule.getType())||CourseSchedule.CourseScheduleType.HIGH_ONLINE.equals(courseSchedule.getType())){
                 //根据课程类型获取对应的默认课酬设置列表
                 List<TeacherDefaultMusicGroupSalary> teacherDefaultMusicGroupSalariesWithCourseType = teacherDefaultMusicGroupSalariesGroupByCourseType.get(courseSchedule.getType());
@@ -518,6 +542,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     teacherSalary = BigDecimal.ZERO;
                 }
 
+                //如果上课日期在转正日期之前的按80%结算
+                if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+                    teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
+                }
+
                 //扣除费用
                 BigDecimal deductCost = new BigDecimal(0);
                 List<String> deductReasons = new ArrayList<>();
@@ -616,6 +645,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 teacherSalary=courseScheduleTeacherSalary.getExpectSalary();
             }
 
+            if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseSchedule.getClassDate().compareTo(teacher.getFormalStaffDate())<0){
+                teacherSalary = teacherSalary.multiply(new BigDecimal("0.8"));
+            }
+
             BigDecimal subsidy = courseSubsidyMap.get(courseSchedule.getSchoolId());
             if (Objects.isNull(subsidy)) {
                 subsidy = new BigDecimal(0);
@@ -684,6 +717,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductReasons.add("签到经纬度异常扣除50");
                 }
+            }else{
+                signInInRange = true;
             }
 
             if(Objects.isNull(teacherAttendance)||Objects.isNull(teacherAttendance.getSignOutStatus())){
@@ -706,6 +741,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     deductCost = deductCost.add(new BigDecimal(50));
                     deductReasons.add("签退经纬度异常,扣除50元");
                 }
+            }else{
+                signOutInRange = true;
             }
 
             if(!signInInRange&&!signOutInRange){

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

@@ -1204,7 +1204,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentRegistration> findMusicGroupStudent(String musicGroupId, Integer actualSubjectId) {
+    public List<StudentRegistration> findMusicGroupStudent(String musicGroupId, String actualSubjectId) {
         List<Subject> subjectList = subjectService.findAll(new HashMap<>());
         List<StudentRegistration> musicGroupStudents = studentRegistrationDao.findMusicGroupStudent(musicGroupId, actualSubjectId);
         for (StudentRegistration musicGroupStudent : musicGroupStudents) {
@@ -1282,7 +1282,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     }
 
     @Override
-    public List<StudentRegistration> findMusicGroupStuNoClassType(String musicGroupId, Long classGroupId, ClassGroupTypeEnum type, Integer subjectId) {
+    public List<StudentRegistration> findMusicGroupStuNoClassType(String musicGroupId, Long classGroupId, ClassGroupTypeEnum type, String subjectId) {
         List<StudentRegistration> students = studentRegistrationDao.findMusicGroupStudent(musicGroupId, subjectId);
         List<Subject> subjectList = subjectService.findAll(new HashMap<>());
 

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

@@ -1927,7 +1927,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
         pauseInfos.put("teaChModeSequence", teachModeSequence);
         pauseInfos.put("coursePriceInfo",coursePrices);
-        pauseInfos.put("days", days);
+//        pauseInfos.put("days", days);
 
         StudentPauseInfo  studentPauseInfo=new StudentPauseInfo();
 		studentPauseInfo.setUserId(studentId);

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

@@ -283,6 +283,7 @@
         <result column="id_" property="id"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="subject_id_list_" property="subjectIdList"/>
+        <result column="memo_" property="memo"/>
         <result column="name_" property="name"/>
         <result column="student_num_" property="studentNum"/>
         <result column="create_time_" property="createTime"/>

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

@@ -779,7 +779,7 @@
     <select id="queryCanAddStudent" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
         select su.id_ user_id_,su.username_,su.phone_,s.name_ subject_name_ from student_registration sr 
         LEFT JOIN sys_user su ON su.id_ = sr.user_id_
-        LEFT JOIN `subject` s ON s.id_ = sr.subject_id_
+        LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
         where sr.music_group_id_ = #{musicGroupId} AND sr.music_group_status_ = 'NORMAL' AND sr.user_id_ NOT IN (
         SELECT DISTINCT mgpcd.user_id_ FROM music_group_payment_calender_detail mgpcd left join music_group_payment_calender mgpc on mgpcd.music_group_payment_calender_id_ = mgpc.id_
         WHERE mgpc.batch_no_ = #{batchNo} and mgpc.music_group_id_ = #{musicGroupId}
@@ -788,7 +788,7 @@
             AND (sr.user_id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%'))
         </if>
         <if test="subjectId != null">
-            AND sr.subject_id_ = #{subjectId}
+            AND sr.actual_subject_id_ = #{subjectId}
         </if>
     </select>
     

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

@@ -448,7 +448,7 @@
         LEFT JOIN sys_user su on sr.user_id_ = su.id_
         WHERE sr.music_group_id_ = #{musicGroupId}
         <if test="actualSubjectId != null">
-            AND sr.actual_subject_id_ = #{actualSubjectId}
+            AND FIND_IN_SET(sr.actual_subject_id_,#{actualSubjectId})
         </if>
         AND payment_status_ = 2 AND sr.music_group_status_ != 'QUIT'
     </select>

+ 4 - 4
mec-web/src/main/java/com/ym/mec/web/controller/StudentRegistrationController.java

@@ -108,8 +108,8 @@ public class StudentRegistrationController extends BaseController {
     @GetMapping("/getMusicGroupStu")
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/getMusicGroupStu')")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id,", required = false, dataType = "int")})
-    public HttpResponseResult getMusicGroupStu(String musicGroupId, Integer actualSubjectId) {
+            @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id,", required = false, dataType = "String")})
+    public HttpResponseResult getMusicGroupStu(String musicGroupId, String actualSubjectId) {
         return succeed(studentRegistrationService.findMusicGroupStudent(musicGroupId, actualSubjectId));
     }
 
@@ -135,8 +135,8 @@ public class StudentRegistrationController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('studentRegistration/getMusicGroupStuNoClassType')")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
             @ApiImplicitParam(name = "type", value = "类型(MIX,HIGH)", required = true, dataType = "ClassGroupTypeEnum"),
-            @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id,", required = false, dataType = "int")})
-    public HttpResponseResult getMusicGroupStuNoClassType(String musicGroupId, Long classGroupId, ClassGroupTypeEnum type, Integer actualSubjectId) {
+            @ApiImplicitParam(name = "actualSubjectId", value = "科目(声部)id,", required = false, dataType = "String")})
+    public HttpResponseResult getMusicGroupStuNoClassType(String musicGroupId, Long classGroupId, ClassGroupTypeEnum type, String actualSubjectId) {
         return succeed(studentRegistrationService.findMusicGroupStuNoClassType(musicGroupId, classGroupId, type, actualSubjectId));
     }