Explorar o código

Merge branch '2021-04-09'

Joburgess %!s(int64=4) %!d(string=hai) anos
pai
achega
48a5b8cde0

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

@@ -31,6 +31,8 @@ public interface TeacherDefaultPracticeGroupSalaryDao extends BaseDAO<Long, Teac
      */
     TeacherDefaultPracticeGroupSalary findByTeacherAndCourseMinutes(@Param("userId")Integer userId,
 																	@Param("minutes") Integer minutes);
+	List<TeacherDefaultPracticeGroupSalary> findByTeachersAndCourseMinutes(@Param("teacherIds")List<Integer> teacherIds,
+																	@Param("minutes") Integer minutes);
 
 
 }

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

@@ -640,8 +640,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 							if(practiceGroup == null){
 								throw new BizException("课程组不存在");
 							}else if (FREE.equals(practiceGroup.getType())){
-								SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
-								BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+								BigDecimal salary = teacherPracticeSalaryMap.get(cgtm.getUserId());
+								if (salary == null) {
+									throw new BizException("请设置老师网管课课酬");
+								}
+								BigDecimal teacherSalary = BigDecimal.ZERO;
+								if(salary.compareTo(new BigDecimal(0))>0){
+									SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+									teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+								}
 								courseScheduleTeacherSalary.setExpectSalary(teacherSalary);
 							}else if (practiceGroup.getType() == TRIAL){
 								courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(0));
@@ -1114,6 +1121,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 teacherIds.add(courseScheduleEndDto.getActualTeacherId());
             }
 
+			List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(allCourseScheduleIds);
+            Map<Long, Set<Integer>> courseTeachingTeacherIdsMap = new HashMap<>();
+            if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+				courseTeachingTeacherIdsMap = courseScheduleTeacherSalaries.stream().filter(c->TeachTypeEnum.TEACHING.equals(c.getTeacherRole())).collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId, Collectors.mapping(CourseScheduleTeacherSalary::getUserId, Collectors.toSet())));
+			}
+
 			List<Integer> classGroupIds = dataList.stream().map(CourseScheduleDto::getClassGroupId).collect(Collectors.toList());
 			List<Group> groupsT = groupDao.findByClassGroupIds(classGroupIds);
             Map<Integer, Group> idGroupMap = groupsT.stream().collect(Collectors.toMap(Group::getClassGroupId, group -> group));
@@ -1132,6 +1145,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					dataList.get(i).setLeaveStudentNum((int) courseStudentAttendances.stream().filter(s->StudentAttendanceStatusEnum.LEAVE.equals(s.getStatus())).count());
 					dataList.get(i).setStudentNum((int) courseStudentAttendances.stream().filter(s->StudentAttendanceStatusEnum.NORMAL.equals(s.getStatus())).count());
 				}
+                if(courseTeachingTeacherIdsMap.containsKey(dataList.get(i).getId())){
+                	dataList.get(i).setTeachingTeacherIds(StringUtils.join(courseTeachingTeacherIdsMap.get(dataList.get(i).getId()), ","));
+				}
             }
         }
         if (count == 0) {

+ 42 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -811,6 +811,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             sysUser.setOrganId(SHENYANG_ORGAN_ID);
         }
 
+        Integer practiceCourseMinutes = 25;
+        SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
+        if (Objects.nonNull(practiceCourseMinutesConfig)) {
+            practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
+        }
+
         List<Integer> includeTeacherIds = new ArrayList<>();
         List<ExtendTeacherBasicDto> organAndSubjectTeachers = teacherDao.findTeaTeachersByOrganAndSubject1(sysUser.getOrganId(), subjectId);
         if (CollectionUtils.isEmpty(organAndSubjectTeachers)) {
@@ -819,6 +825,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         List<Integer> allTeacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList());
 
+        List<TeacherDefaultPracticeGroupSalary> haveDefaultSalaryTeachers = teacherDefaultPracticeGroupSalaryDao.findByTeachersAndCourseMinutes(allTeacherIds, practiceCourseMinutes);
+        if(CollectionUtils.isEmpty(haveDefaultSalaryTeachers)){
+            return Collections.emptyList();
+        }
+        Set<Integer> hasDefaultSalaryTeacherIds = haveDefaultSalaryTeachers.stream().map(TeacherDefaultPracticeGroupSalary::getUserId).collect(Collectors.toSet());
+        allTeacherIds = new ArrayList<>(hasDefaultSalaryTeacherIds);
+
         List<CourseSchedule> userCourses = courseScheduleDao.findUserCourses(userId, allTeacherIds);
 
         if (!CollectionUtils.isEmpty(userCourses)) {
@@ -850,7 +863,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
 
         for (ExtendTeacherBasicDto organAndSubjectTeacher : organAndSubjectTeachers) {
-            if (!includeTeacherIds.contains(organAndSubjectTeacher.getId())) {
+            if (!includeTeacherIds.contains(organAndSubjectTeacher.getId())&&hasDefaultSalaryTeacherIds.contains(organAndSubjectTeacher.getId())) {
                 includeTeacherIds.add(organAndSubjectTeacher.getId());
             }
         }
@@ -1965,6 +1978,18 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
         List<TeacherAttendance> teacherAttendances = new ArrayList<>();
 
+        TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroup.getUserId(), practiceCourseMinutes);
+        BigDecimal teacherDefaultSalary = null;
+        if (Objects.nonNull(teacherDefaultPracticeGroupSalary)) {
+            teacherDefaultSalary = teacherDefaultPracticeGroupSalary.getMainTeacherSalary();
+        }
+        if(teacherDefaultSalary == null){
+            throw new BizException("请设置教师课酬");
+        }
+        if(teacherDefaultSalary.compareTo(new BigDecimal(0))>0){
+            teacherDefaultSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+        }
+
         for (Date courseDate : allCourseDates) {
             //课表
             CourseSchedule courseSchedule = new CourseSchedule();
@@ -1992,7 +2017,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             courseScheduleTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
             courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
             courseScheduleTeacherSalary.setUserId(practiceGroup.getUserId());
-            courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
+            courseScheduleTeacherSalary.setExpectSalary(teacherDefaultSalary);
             courseScheduleTeacherSalary.setCreateTime(now);
             courseScheduleTeacherSalary.setUpdateTime(now);
             courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
@@ -2363,6 +2388,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 //            sysUser.setOrganId(SHENYANG_ORGAN_ID);
 //        }
 
+        Integer practiceCourseMinutes = 25;
+        SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
+        if (Objects.nonNull(practiceCourseMinutesConfig)) {
+            practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
+        }
+
         List<Integer> includeTeacherIds = new ArrayList<>();
         List<ExtendTeacherBasicDto> organAndSubjectTeachers = teacherDao.findTeaTeachersByOrganAndSubject2(sysUser.getOrganId(), subjectId);
         if (CollectionUtils.isEmpty(organAndSubjectTeachers)) {
@@ -2371,6 +2402,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         List<Integer> allTeacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList());
 
+        List<TeacherDefaultPracticeGroupSalary> haveDefaultSalaryTeachers = teacherDefaultPracticeGroupSalaryDao.findByTeachersAndCourseMinutes(allTeacherIds, practiceCourseMinutes);
+        if(CollectionUtils.isEmpty(haveDefaultSalaryTeachers)){
+            return Collections.emptyList();
+        }
+        Set<Integer> hasDefaultSalaryTeacherIds = haveDefaultSalaryTeachers.stream().map(TeacherDefaultPracticeGroupSalary::getUserId).collect(Collectors.toSet());
+        allTeacherIds = new ArrayList<>(hasDefaultSalaryTeacherIds);
+
         List<CourseSchedule> userCourses = courseScheduleDao.findUserCourses2(userId, allTeacherIds);
 
         if (!CollectionUtils.isEmpty(userCourses)) {
@@ -2412,7 +2450,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
 
         for (ExtendTeacherBasicDto organAndSubjectTeacher : organAndSubjectTeachers) {
-            if (!includeTeacherIds.contains(organAndSubjectTeacher.getId())) {
+            if (!includeTeacherIds.contains(organAndSubjectTeacher.getId())&&hasDefaultSalaryTeacherIds.contains(organAndSubjectTeacher.getId())) {
                 includeTeacherIds.add(organAndSubjectTeacher.getId());
             }
         }
@@ -3206,6 +3244,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public HttpResponseResult createPackagePracticeGroup(PracticeGroupBuyDto practiceGroupBuyParams) {
+        studentDao.lockUser(practiceGroupBuyParams.getStudentId());
         if (Objects.isNull(practiceGroupBuyParams.getUserId())) {
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "请选择教师");
         }
@@ -3240,8 +3279,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
         Integer practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
         SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
-        SysConfig practiceBuyActivityExpireDateConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_BUY_ACTIVITY_EXPIRE_DATE);
-        SysConfig practicePromotionActivityStartDateConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_PROMOTION_ACTIVITY_START_DATE);
 
         Date now = new Date();
 

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/TeacherDefaultPracticeGroupSalaryMapper.xml

@@ -111,4 +111,12 @@
 	<select id="findByTeacherAndCourseMinutes" resultMap="TeacherDefaultPracticeGroupSalary">
 		SELECT * FROM teacher_default_practice_group_salary where user_id_ = #{userId} AND minutes_=#{minutes}
 	</select>
+	<select id="findByTeachersAndCourseMinutes" resultMap="TeacherDefaultPracticeGroupSalary">
+		SELECT * FROM teacher_default_practice_group_salary
+		where minutes_=#{minutes}
+		  AND user_id_ IN
+			<foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+				#{teacherId}
+			</foreach>
+	</select>
 </mapper>

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

@@ -1168,9 +1168,9 @@ public class ExportController extends BaseController {
                     row.setNextPaymentDateStr(DateUtil.format(row.getNextPaymentDate(), DateUtil.DEFAULT_PATTERN));
                 }
             }
-            String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "年级", "班级", "专业", "学员状态", "新增学员", "缴费金额",
+            String[] header = {"学员编号", "学员姓名", "性别", "联系电话", "年级", "班级", "专业", "学员状态", "缴费金额",
                     "下次缴费日期", "是否报名缴费", "是否激活", "是否有剩余VIP", "是否有剩余网管课", "欠费总额"};
-            String[] body = {"userId", "realName", "gender", "phone", "currentGrade", "currentClass", "subjectName", "studentStatus", "isNewStudentStr",
+            String[] body = {"userId", "realName", "gender", "phone", "currentGrade", "currentClass", "subjectName", "studentStatus",
                     "courseFee", "nextPaymentDateStr", "paymentStatus.desc", "activeName", "hasVip ? '是' : '否'", "hasPractice ? '是' : '否'", "noPaymentAmount"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, musicGroupStudentsDtoPageInfo.getRows());
             response.setContentType("application/octet-stream");