From b3e0d0ea6c1e311566bab861b79cc9b9c6d25287 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 15 三月 2024 09:49:03 +0800 Subject: [PATCH] 修改bug --- cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java | 245 +++++++++++++++++++++++++----------------------- 1 files changed, 127 insertions(+), 118 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java index c07b044..5f646b8 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java @@ -233,32 +233,39 @@ //未上的排课数据 List<CoursePackageScheduling> packageSchedulings = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>().eq("studentId", coursePackageOrderStudent.getStudentId()) .eq("type", 1).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).eq("status", 1).orderByDesc("classDate")); - //排课使用的总课时 + //已经排课的总课时 int classHour = packageSchedulings.size() * codeTime; //未排课的课时 int notClass = laveClassHours - classHour; + /** + * 1、查询剩余已经排课的数据 + * 2、判断 剩余课时- 未上排课 = 可扣减 -->是否满足扣减 + * --->满足扣减,直接减去剩余课时 + * --->不满足扣减,需要计算出删除的排课节数(注意每节消耗的课时数),然后减去剩余课时 + */ + //判断是否需要删除排课数据 if(notClass < deductionClassHour.getClassHour()){ + //计算需要删除的排课数量 int clss = deductionClassHour.getClassHour() - notClass; int n = clss % codeTime; - int l = 0; + int num = clss / codeTime; //不整除的情况,需要多删除一节排课,回加差额课时。 if(n != 0){ - n += 1; - l = (codeTime * n) - clss; + num += 1; } - coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + l); - //删除已排的课程 - List<CoursePackageScheduling> coursePackageSchedulings = packageSchedulings.subList(0, n); + List<CoursePackageScheduling> coursePackageSchedulings = packageSchedulings.subList(0, num); List<Long> collect = coursePackageSchedulings.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList()); - coursePackageSchedulingService.removeByIds(collect); - coursePackageStudentMapper.delete(new QueryWrapper<CoursePackageStudent>().in("coursePackageSchedulingId", collect)); - - deductionClassHour.setScheduledCourses(n); + if(collect.size() > 0){ + coursePackageSchedulingService.removeByIds(collect); + coursePackageStudentMapper.delete(new QueryWrapper<CoursePackageStudent>().in("coursePackageSchedulingId", collect)); + } + deductionClassHour.setScheduledCourses(num); + }else{ + deductionClassHour.setScheduledCourses(0); } - this.updateById(coursePackageOrderStudent); CourseCounsum courseCounsum = new CourseCounsum(); @@ -293,118 +300,66 @@ CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setPaymentId(coursePackageOrderStudent.getId()); - courseCounsum.setChangeType(0); + courseCounsum.setChangeType(1); courseCounsum.setNum(deductionClassHour.getClassHour()); courseCounsum.setInsertTime(new Date()); - courseCounsum.setReason("社区世界杯报名"); + courseCounsum.setReason("取消社区世界杯报名"); courseCounsum.setAppUserId(coursePackageOrderStudent.getAppUserId()); courseCounsumService.save(courseCounsum); //需要排课的节数 Integer scheduledCourses = deductionClassHour.getScheduledCourses(); - TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); - Integer codeTime = coursePackage.getCodeTime(); - CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("studentId", coursePackageOrderStudent.getStudentId()) - .eq("type", 1).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).eq("status", 1) - .orderByDesc("classDate").last(" limit 0, 1")); + if(scheduledCourses > 0){ + TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); + Integer codeTime = coursePackage.getCodeTime(); + CoursePackageScheduling one = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("studentId", coursePackageOrderStudent.getStudentId()) + .eq("type", 1).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).eq("status", 1) + .orderByDesc("classDate").last(" limit 0, 1")); - //上课星期 - String classWeeks = coursePackage.getClassWeeks(); - List<Integer> week = week(classWeeks); - //新排课的开始日期 - Calendar start = Calendar.getInstance(); - String classStartTime = coursePackage.getClassStartTime(); - String classEndTime = coursePackage.getClassEndTime(); - String[] split = classStartTime.split(","); - String[] split1 = classEndTime.split(","); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - //计算剩余课时最大排课节数 - int num = laveClassHours / codeTime; - //比较除哪个最小以哪个来确定排课节数 - num = num > scheduledCourses ? scheduledCourses : num; + //上课星期 + String classWeeks = coursePackage.getClassWeeks(); + List<Integer> week = week(classWeeks); + //新排课的开始日期 + Calendar start = Calendar.getInstance(); + String classStartTime = coursePackage.getClassStartTime(); + String classEndTime = coursePackage.getClassEndTime(); + String[] split = classStartTime.split(","); + String[] split1 = classEndTime.split(","); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //计算剩余课时最大排课节数 + int num = laveClassHours / codeTime; + //比较除哪个最小以哪个来确定排课节数 + num = num > scheduledCourses ? scheduledCourses : num; - //先检查当前是都还有需要排课的 - if(null != one){ - Date classDate = one.getClassDate(); + //先检查当前是都还有需要排课的 + if(null != one){ + Date classDate = one.getClassDate(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(classDate); - String s = sdf.format(calendar.getTime()); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(classDate); + String s = sdf.format(calendar.getTime()); - for (int j = 0; j < split.length; j++) { - Date parse = null; - Date parse1 = null; - try { - parse = format.parse(s + " " + split[j]); - parse1 = format.parse(s + " " + split1[j]); - } catch (ParseException e) { - throw new RuntimeException(e); - } - if(classDate.getTime() <= parse.getTime()){ - continue; - } + for (int j = 0; j < split.length; j++) { + Date parse = null; + Date parse1 = null; + try { + parse = format.parse(s + " " + split[j]); + parse1 = format.parse(s + " " + split1[j]); + } catch (ParseException e) { + throw new RuntimeException(e); + } + if(classDate.getTime() >= parse.getTime()){ + continue; + } - //开始组装排课数据 - CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); - packageScheduling.setType(1); - packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); - packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId()); - packageScheduling.setCoursePackageId(coursePackage.getId()); - packageScheduling.setClassDate(parse); - packageScheduling.setEndDate(parse1); - 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()); - student1.setType(1); - coursePackageStudentMapper.insert(student1); - - num--; - if(num == 0){ - return; - } - } - - calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); - start = calendar; - } - - if(num == 0){ - return; - } - - //继续排后面的数据 - while (true) { - String s = sdf.format(start.getTime()); - - //判断当天是否在排课星期内 - int day = start.get(Calendar.DAY_OF_WEEK); - day = day - 1 == 0 ? 7 : day - 1; - if (!week.contains(day)) { - start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + 1); - continue; - } - - for (int j = 0; j < split.length; j++) { - //开始组装排课数据 - CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); - packageScheduling.setType(1); - packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); - packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId()); - packageScheduling.setCoursePackageId(coursePackage.getId()); - try { - Date parse = format.parse(s + " " + split[j]); - Date parse1 = format.parse(s + " " + split1[j]); + //开始组装排课数据 + CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); + packageScheduling.setType(1); + packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); + packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId()); + packageScheduling.setCoursePackageId(coursePackage.getId()); packageScheduling.setClassDate(parse); packageScheduling.setEndDate(parse1); packageScheduling.setStatus(1); @@ -421,15 +376,69 @@ student1.setInsertTime(new Date()); student1.setType(1); coursePackageStudentMapper.insert(student1); - } catch (Exception e) { - e.printStackTrace(); + + num--; + if(num <= 0){ + return; + } } - num--; - if(num == 0){ - return; - } + + calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); + start = calendar; } - start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + 1); + + if(num <= 0){ + return; + } + + //继续排后面的数据 + while (true) { + String s = sdf.format(start.getTime()); + + //判断当天是否在排课星期内 + int day = start.get(Calendar.DAY_OF_WEEK); + day = day - 1 == 0 ? 7 : day - 1; + if (!week.contains(day)) { + start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + 1); + continue; + } + + for (int j = 0; j < split.length; j++) { + //开始组装排课数据 + CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); + packageScheduling.setType(1); + packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); + packageScheduling.setStudentId(coursePackageOrderStudent.getStudentId()); + packageScheduling.setCoursePackageId(coursePackage.getId()); + try { + Date parse = format.parse(s + " " + split[j]); + Date parse1 = format.parse(s + " " + split1[j]); + packageScheduling.setClassDate(parse); + packageScheduling.setEndDate(parse1); + 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()); + student1.setType(1); + coursePackageStudentMapper.insert(student1); + } catch (Exception e) { + e.printStackTrace(); + } + num--; + if(num <= 0){ + return; + } + } + start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + 1); + } } } -- Gitblit v1.7.1