package com.dsh.course.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.course.entity.CoursePackageScheduling; import com.dsh.course.entity.CoursePackageStudent; import com.dsh.course.entity.TCoursePackage; import com.dsh.course.mapper.CoursePackageSchedulingMapper; import com.dsh.course.model.QueryCoursePackageSchedulingList; import com.dsh.course.service.CoursePackageStudentService; import com.dsh.course.service.ICoursePackageSchedulingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; /** * @author zhibing.pu * @Date 2023/8/11 10:58 */ @Service public class CoursePackageSchedulingServiceImpl extends ServiceImpl implements ICoursePackageSchedulingService { @Autowired private CoursePackageStudentService coursePackageStudentService; @Autowired private TCoursePackageServiceImpl coursePackageService; @Resource private CoursePackageSchedulingMapper coursePackageSchedulingMapper; /** * 获取课包排课数据 * @param page * @param queryCoursePackageSchedulingList * @return */ @Override public List> queryCoursePackageSchedulingList(Page> page, QueryCoursePackageSchedulingList queryCoursePackageSchedulingList) { List> list = this.baseMapper.queryCoursePackageSchedulingList(page, queryCoursePackageSchedulingList); for (Map map : list) { Long id = Long.valueOf(map.get("id").toString()); int count = coursePackageStudentService.count(new QueryWrapper().eq("coursePackageSchedulingId", id).eq("reservationStatus", 1)); // map.put("registered", count); int count1 = coursePackageStudentService.count(new QueryWrapper().eq("coursePackageSchedulingId", id).eq("reservationStatus", 1)); int count2 = coursePackageStudentService.count(new QueryWrapper().eq("coursePackageSchedulingId", id).eq("reservationStatus", 0)); map.put("registered", count2); map.put("actualArrival", count1); map.put("nonArrival", count - count1); // Integer totalClassHours = (Integer) map.get("totalClassHours"); // Integer laveClassHours = (Integer) map.get("laveClassHours"); // map.put("already",totalClassHours-laveClassHours); } return list; } /** * 定时添加排课数据 */ @Override public void taskAddData() { new Thread(new Runnable() { @Override public void run() { try { List list = coursePackageService.list(new QueryWrapper().eq("status", 2).eq("auditStatus", 2).eq("state", 1)); for (TCoursePackage tCoursePackage : list) { CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectOne(new QueryWrapper().eq("coursePackageId", tCoursePackage.getId()).last(" order by classDate desc limit 0, 1")); Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(null != coursePackageScheduling){ calendar.setTime(sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00")); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); }else{ calendar.setTime(sdf1.parse(sdf.format(new Date()) + " 00:00:00")); } coursePackageScheduling = new CoursePackageScheduling(); coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); coursePackageScheduling.setClassDate(calendar.getTime()); coursePackageScheduling.setStatus(1); coursePackageSchedulingMapper.insert(coursePackageScheduling); } }catch (Exception e){ e.printStackTrace(); } } }).start(); } /** * 定时修改状态 */ @Override public void taskSetStatus() { new Thread(new Runnable() { @Override public void run() { //开始数据 List coursePackageSchedulings = coursePackageSchedulingMapper.selectList(new QueryWrapper().eq("status", 1).last(" and now() >= classDate and now() < endDate")); for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) { coursePackageScheduling.setStatus(2); coursePackageScheduling.setCoursePackageId(null); coursePackageSchedulingMapper.updateById(coursePackageScheduling); TCoursePackage coursePackage = coursePackageService.getById(coursePackageScheduling.getCoursePackageId()); if(coursePackage.getStatus() == 1){ coursePackage.setStatus(2); coursePackageService.updateById(coursePackage); } } //结束数据 coursePackageSchedulings = coursePackageSchedulingMapper.selectList(new QueryWrapper().eq("status", 2).last(" and now() >= endDate")); for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) { coursePackageScheduling.setStatus(3); coursePackageScheduling.setCoursePackageId(null); coursePackageSchedulingMapper.updateById(coursePackageScheduling); } } }).start(); } }