|
@@ -1,19 +1,83 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.Comparator;
|
|
|
+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.TreeSet;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+import org.apache.commons.collections.ListUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+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.auth.api.entity.SysUserRole;
|
|
|
import com.ym.mec.auth.api.enums.SysUserType;
|
|
|
-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.dao.ClassGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao;
|
|
|
+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.MusicGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SubjectDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SysConfigDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
|
|
|
+import com.ym.mec.biz.dal.dao.VipGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseAttendanceDetailHeadInfoDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseScheduleDto;
|
|
|
+import com.ym.mec.biz.dal.dto.IntegerAndIntegerListDto;
|
|
|
+import com.ym.mec.biz.dal.dto.Mapper;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
|
|
|
+import com.ym.mec.biz.dal.entity.ClassGroup;
|
|
|
+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.CourseScheduleComplaints;
|
|
|
+import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.StudentAttendance;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
|
|
|
+import com.ym.mec.biz.dal.entity.VipGroup;
|
|
|
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
|
|
|
+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.MessageTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ParamEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
|
|
|
+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.CourseScheduleQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.StudentCourseScheduleRecordQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
|
|
|
-import com.ym.mec.biz.service.*;
|
|
|
+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.SysConfigService;
|
|
|
+import com.ym.mec.biz.service.SysMessageService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
@@ -21,18 +85,6 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
-import org.apache.commons.collections.ListUtils;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
-
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-import java.util.stream.Stream;
|
|
|
|
|
|
@Service
|
|
|
public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSchedule> implements CourseScheduleService {
|
|
@@ -934,30 +986,40 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean updateCourseScheduleToOverStatus() {
|
|
|
|
|
|
Date date = new Date();
|
|
|
+ //课程已结束,更新“未签到”学生的状态未“旷课”
|
|
|
List<StudentAttendance> studentAttendanceList = courseScheduleDao.queryUnsignedStudentList();
|
|
|
for (StudentAttendance studentAttendance : studentAttendanceList) {
|
|
|
studentAttendance.setStatus(StudentAttendanceStatusEnum.TRUANT);
|
|
|
+ studentAttendance.setCurrentClassTimes(studentAttendance.getCurrentClassTimes() + 1);
|
|
|
studentAttendance.setCreateTime(date);
|
|
|
}
|
|
|
|
|
|
if (studentAttendanceList != null && studentAttendanceList.size() > 0) {
|
|
|
studentAttendanceDao.batchUpdate(studentAttendanceList);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ //自动更新课程状态至“已结束”
|
|
|
List<CourseSchedule> list = courseScheduleDao.queryFinishedWithNoUpdateStatus();
|
|
|
|
|
|
List<CourseSchedule> updateList = new ArrayList<CourseSchedule>();
|
|
|
- List<Integer> classGroups = new ArrayList<Integer>();
|
|
|
+ List<Integer> classGroupIds = new ArrayList<Integer>();
|
|
|
+ List<Long> courseScheduleIdList = new ArrayList<Long>();
|
|
|
+
|
|
|
for (CourseSchedule courseSchedule : list) {
|
|
|
courseSchedule.setStatus(CourseStatusEnum.OVER);
|
|
|
courseSchedule.setUpdateTime(date);
|
|
|
updateList.add(courseSchedule);
|
|
|
|
|
|
- if (!classGroups.contains(courseSchedule.getClassGroupId())) {
|
|
|
- classGroups.add(courseSchedule.getClassGroupId());
|
|
|
+ if (!classGroupIds.contains(courseSchedule.getClassGroupId())) {
|
|
|
+ classGroupIds.add(courseSchedule.getClassGroupId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(courseSchedule.getGroupType() == GroupType.VIP){
|
|
|
+ courseScheduleIdList.add(courseSchedule.getId());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -965,11 +1027,36 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
courseScheduleDao.batchUpdate(updateList);
|
|
|
}
|
|
|
|
|
|
- // 更新班级课次
|
|
|
- if (classGroups.size() > 0) {
|
|
|
- classGroupService.batchIncreaseClassTimes(classGroups);
|
|
|
+ // 更新班级已上课次
|
|
|
+ if (classGroupIds.size() > 0) {
|
|
|
+ classGroupService.batchIncreaseClassTimes(classGroupIds);
|
|
|
+
|
|
|
+ //查询班级信息
|
|
|
+ List<ClassGroup> classGroupList = classGroupService.findClassGroupByIds(classGroupIds.stream().map(e->e.toString()).collect(Collectors.joining(",")));
|
|
|
+
|
|
|
+ List<String> vipGroupIdList = new ArrayList<String>();
|
|
|
+ for(ClassGroup classGroup : classGroupList){
|
|
|
+ if(classGroup.getGroupType() == GroupType.VIP && classGroup.getCurrentClassTimes() == classGroup.getTotalClassTimes().intValue()){
|
|
|
+ if(!vipGroupIdList.contains(classGroup.getMusicGroupId())){
|
|
|
+ vipGroupIdList.add(classGroup.getMusicGroupId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(vipGroupIdList.size() > 0){
|
|
|
+ List<VipGroup> vipGroupList = vipGroupDao.queryByIds(vipGroupIdList.stream().collect(Collectors.joining(",")));
|
|
|
+ for(VipGroup vipGroup : vipGroupList){
|
|
|
+ vipGroup.setStatus(VipGroupStatusEnum.FINISHED);
|
|
|
+ vipGroup.setUpdateTime(date);
|
|
|
+ }
|
|
|
+ vipGroupDao.batchUpdate(vipGroupList);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ if (courseScheduleIdList.size() > 0) {
|
|
|
+ // vip课自动签退
|
|
|
+ teacherAttendanceDao.updateViPSignOutStatus(courseScheduleIdList.stream().map(a -> a.toString()).collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|