From e825aefcd7285facc06fcb5bf69cdd5afc402b2d Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 08 十二月 2023 16:58:02 +0800 Subject: [PATCH] 11.27,9 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 189 +++++++++++++++++++++++++++++----------------- 1 files changed, 119 insertions(+), 70 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java index e148d1e..899fbcf 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java @@ -1210,6 +1210,7 @@ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays); coursePackageOrderStudent.setUseTime(calendar.getTime()); coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent); + //更新学员课时有效期 if(null == student.getValidity()){ student.setValidity(calendar.getTime()); @@ -1222,6 +1223,9 @@ //开始排课 addPackageStudent(coursePackage, coursePackageOrder.getAppUserId(), Integer.valueOf(id), coursePackageOrderStudent, student.getValidity()); + + + //课时记录 CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setPaymentId(coursePackageOrderStudent.getId()); @@ -1315,6 +1319,31 @@ //上课星期 String classWeeks = tCoursePackage.getClassWeeks(); List<Integer> week = week(classWeeks); + CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>() + .eq("studentId", sId) + .eq("coursePackageId", tCoursePackage.getId()) + .eq("status", 1) + .orderByDesc("classDate") + .last(" limit 0, 1") + ); + if(null != one){ + //先检测是否需要继续进行排课 + Calendar calendar1 = Calendar.getInstance(); + calendar1.setTime(one.getClassDate()); + int day_week1 = calendar1.get(Calendar.DAY_OF_WEEK); + day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1; + int week_of_month = calendar1.get(Calendar.WEEK_OF_MONTH); + + Calendar calendar2 = Calendar.getInstance(); + calendar2.setTime(new Date()); + int week_of_month1 = calendar2.get(Calendar.WEEK_OF_MONTH); + + //最后一次的排课时间不在本周,且是一周的最后一天。(如果是本周则表明已经课时用完了) + if(week.get(week.size() - 1).equals(day_week1) && week_of_month == week_of_month1){ + return; + } + } + //上课时段 String[] split = tCoursePackage.getClassStartTime().split(","); String[] split1 = tCoursePackage.getClassEndTime().split(","); @@ -1468,7 +1497,7 @@ /** - * 课时有效期更新后-更新历史排课数据 + * 课时有效期更新后-更新历史排课数据(因有效期限制的排课数据,还有剩余课时) * @param student */ public void addOldPackageStudent(Student student){ @@ -1493,18 +1522,26 @@ ); Calendar calendar = Calendar.getInstance(); + //上课星期 + String classWeeks = coursePackage.getClassWeeks(); + List<Integer> week = week(classWeeks); + + Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours(); + Integer codeTime = coursePackage.getCodeTime(); + String classStartTime = coursePackage.getClassStartTime(); + String classEndTime = coursePackage.getClassEndTime(); + String format = sdf1.format(one.getClassDate()); + String time = format.substring(format.indexOf(" ") + 1); + String[] split = classStartTime.split(","); + String[] split1 = classEndTime.split(","); + if(null == one){ calendar.setTime(new Date()); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); }else{ - Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours(); - Integer codeTime = coursePackage.getCodeTime(); - String classStartTime = coursePackage.getClassStartTime(); - String classEndTime = coursePackage.getClassEndTime(); - String format = sdf1.format(one.getClassDate()); - String time = format.substring(format.indexOf(" ") + 1); - String[] split = classStartTime.split(","); - String[] split1 = classEndTime.split(","); int n = Arrays.asList(split).indexOf(time); if(n != split.length - 1){ calendar.setTime(one.getClassDate()); @@ -1544,72 +1581,84 @@ } }else{ - calendar.setTime(one.getClassDate()); - calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - int day_week1 = calendar.get(Calendar.DAY_OF_WEEK); + //先检测是否需要继续进行排课 + Calendar calendar1 = Calendar.getInstance(); + calendar1.setTime(one.getClassDate()); + int day_week1 = calendar1.get(Calendar.DAY_OF_WEEK); day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1; - int num = 8 - day_week1 + 7; + int week_of_month = calendar1.get(Calendar.WEEK_OF_MONTH); - //上课星期 - String classWeeks = coursePackage.getClassWeeks(); - List<Integer> week = week(classWeeks); + Calendar calendar2 = Calendar.getInstance(); + calendar2.setTime(new Date()); + int week_of_month1 = calendar2.get(Calendar.WEEK_OF_MONTH); - for (int i = 0; i < num; i++) { - Date time1 = calendar.getTime(); - - //判断当天是否在排课星期内 - int day = calendar.get(Calendar.DAY_OF_WEEK); - day = day - 1 == 0 ? 7 : day - 1; - if (!week.contains(day)) { - calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); - continue; - } - - //大于有效期不进行排课 - if (calendar.getTimeInMillis() >= validity.getTime()) { - break; - } - for (int j = 0; j < split.length; j++) { - //剩余数量不足以排课 - if (laveClassHours.compareTo(codeTime) < 0) { - break; - } - - laveClassHours -= codeTime; - - CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); - packageScheduling.setType(coursePackage.getType()); - packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); - packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId()); - packageScheduling.setCoursePackageId(coursePackage.getId()); - try { - Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]); - Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]); - packageScheduling.setClassDate(parse); - packageScheduling.setEndDate(parse1); - }catch (Exception e){ - e.printStackTrace(); - } - packageScheduling.setStatus(1); - coursePackageSchedulingService.save(packageScheduling); - CoursePackageStudent student1 = new CoursePackageStudent(); - student1.setAppUserId(coursePackageOrderStudent.getAppUserId()); - student1.setStudentId(coursePackageOrderStudent.getStudentId()); - student1.setCoursePackageId(coursePackage.getId()); - student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId()); - student1.setCoursePackageSchedulingId(packageScheduling.getId()); - student1.setSignInOrNot(1); - student1.setReservationStatus(1); - student1.setInsertTime(new Date()); - coursePackageStudentMapper.insert(student1); - } - //增加日期,用于判断 - calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); + //最后一次的排课时间不在本周,且是一周的最后一天。(如果是本周则表明已经课时用完了) + if(week.get(week.size() - 1).equals(day_week1) && week_of_month != week_of_month1){ + break; } } + + calendar.setTime(one.getClassDate()); + calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + } + + int day_week = calendar.get(Calendar.DAY_OF_WEEK); + day_week = day_week - 1 == 0 ? 7 : day_week - 1; + int num = 8 - day_week + 7; + for (int i = 0; i < num; i++) { + Date time1 = calendar.getTime(); + + //判断当天是否在排课星期内 + int day = calendar.get(Calendar.DAY_OF_WEEK); + day = day - 1 == 0 ? 7 : day - 1; + if (!week.contains(day)) { + calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); + continue; + } + + //大于有效期不进行排课 + if (calendar.getTimeInMillis() >= validity.getTime()) { + break; + } + for (int j = 0; j < split.length; j++) { + //剩余数量不足以排课 + if (laveClassHours.compareTo(codeTime) < 0) { + break; + } + + laveClassHours -= codeTime; + + CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); + packageScheduling.setType(coursePackage.getType()); + packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); + packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId()); + packageScheduling.setCoursePackageId(coursePackage.getId()); + try { + Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]); + Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]); + packageScheduling.setClassDate(parse); + packageScheduling.setEndDate(parse1); + }catch (Exception e){ + e.printStackTrace(); + } + packageScheduling.setStatus(1); + coursePackageSchedulingService.save(packageScheduling); + CoursePackageStudent student1 = new CoursePackageStudent(); + student1.setAppUserId(coursePackageOrderStudent.getAppUserId()); + student1.setStudentId(coursePackageOrderStudent.getStudentId()); + student1.setCoursePackageId(coursePackage.getId()); + student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId()); + student1.setCoursePackageSchedulingId(packageScheduling.getId()); + student1.setSignInOrNot(1); + student1.setReservationStatus(1); + student1.setInsertTime(new Date()); + coursePackageStudentMapper.insert(student1); + } + //增加日期,用于判断 + calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); } } } -- Gitblit v1.7.1