From f8521034c5007b11bf00040e101bcf21195dfeb8 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 27 十一月 2023 16:49:04 +0800
Subject: [PATCH] 后台
---
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 171 insertions(+), 6 deletions(-)
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
index d76812b..c4797d5 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -193,16 +193,18 @@
List<Integer> week = week(classWeeks);
//新排课的开始日期
Calendar start = Calendar.getInstance();
- //需要排课的天数
- Integer num = 14;
if(null != coursePackageScheduling){
Date classDate = coursePackageScheduling.getClassDate();
Calendar calendar = Calendar.getInstance();
calendar.setTime(classDate);
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
start = calendar;
- num = 7;
}
+ //需要排课的天数
+ int day_week = start.get(Calendar.DAY_OF_WEEK);
+ day_week = day_week - 1 == 0 ? 7 : day_week - 1;
+ Integer num = 8 - day_week + 7;
+
String classStartTime = coursePackage.getClassStartTime();
String classEndTime = coursePackage.getClassEndTime();
String[] split = classStartTime.split(",");
@@ -244,7 +246,7 @@
}
//减少剩余课时数量
laveClassHours -= codeTime;
-
+ //开始组装排课数据
CoursePackageScheduling packageScheduling = new CoursePackageScheduling();
packageScheduling.setType(1);
packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId());
@@ -263,7 +265,7 @@
student1.setStudentId(coursePackageOrderStudent.getStudentId());
student1.setCoursePackageId(coursePackage.getId());
student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
- student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+ student1.setCoursePackageSchedulingId(packageScheduling.getId());
student1.setSignInOrNot(1);
student1.setReservationStatus(1);
student1.setInsertTime(new Date());
@@ -276,7 +278,6 @@
start.set(Calendar.DAY_OF_YEAR, start.get(Calendar.DAY_OF_YEAR) + 1);
}
}
-
}
@@ -311,4 +312,168 @@
}
return integers;
}
+
+
+ /**
+ * 处理剩余课时已经全部排完课后临时增加课时后添加排课
+ * @param coursePackageOrderStudentId
+ */
+ @Override
+ public void addNewCoursePackageScheduling(Integer coursePackageOrderStudentId, Integer classNumber) {
+ CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePackageOrderStudentId);
+ CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>()
+ .eq("appUserId", coursePackageOrderStudent.getAppUserId())
+ .eq("studentId", coursePackageOrderStudent.getStudentId())
+ .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId())
+ .eq("status", 1)
+ .orderByDesc("classDate")
+ .last(" limit 0, 1")
+ );
+ TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
+ Integer codeTime = coursePackage.getCodeTime();
+ Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
+ Date classDate = coursePackageScheduling.getClassDate();
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(new Date());
+ int day_week = calendar.get(Calendar.DAY_OF_WEEK);
+ day_week = day_week - 1 == 0 ? 7 : day_week - 1;
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 7 - day_week);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+
+ //剩余课时已不足以继续排课,且最后一次的排课时间是在本周(因为定时任务会周一凌晨去继续进行排课处理
+ // 如果最后一次排课时间不是本周,则直接增加剩余课时,剩余排课逻辑交由定时任务处理)
+ if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){
+ //从第二天开始
+ Calendar startTime = Calendar.getInstance();
+ startTime.setTime(new Date());
+ startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
+ startTime.set(Calendar.HOUR_OF_DAY, 0);
+ startTime.set(Calendar.MINUTE, 0);
+ startTime.set(Calendar.SECOND, 0);
+ int day_week1 = startTime.get(Calendar.DAY_OF_WEEK);
+ day_week1 = day_week1 - 1 == 0 ? 7 : day_week1 - 1;
+ int num = 8 - day_week1 + 7;
+
+ //上课星期
+ String classWeeks = coursePackage.getClassWeeks();
+ List<Integer> week = week(classWeeks);
+ //新剩余课时
+ laveClassHours += classNumber;
+ //新有效期
+ Calendar calendar1 = Calendar.getInstance();
+ calendar1.setTime(coursePackageOrderStudent.getUseTime());
+ calendar1.set(Calendar.DAY_OF_YEAR, calendar1.get(Calendar.DAY_OF_YEAR) + classNumber);
+ Date useTime = calendar1.getTime();
+
+ //判断最后一天是否所有时段都已排完
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
+ String format = sdf.format(coursePackageScheduling.getClassDate());
+ String time = format.substring(format.indexOf(" "));
+ String classStartTime = coursePackage.getClassStartTime();
+ String classEndTime = coursePackage.getClassEndTime();
+ String[] split = classStartTime.split(",");
+ String[] split1 = classEndTime.split(",");
+ int n = Arrays.asList(split).indexOf(time);
+ if(n != split.length - 1){
+ //单独处理剩余没排课的时段
+ n++;
+ for (int i = n; i < split.length; i++) {
+ //剩余数量不足以排课
+ 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(format.format(time) + " " + split[i]);
+ Date parse1 = sdf.parse(format.format(time) + " " + split1[i]);
+ packageScheduling.setClassDate(parse);
+ packageScheduling.setEndDate(parse1);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ packageScheduling.setStatus(1);
+ this.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);
+ }
+ }
+
+ for (int i = 0; i < num; i++) {
+ Date time1 = startTime.getTime();
+
+ //判断当天是否在排课星期内
+ int day = startTime.get(Calendar.DAY_OF_WEEK);
+ day = day - 1 == 0 ? 7 : day - 1;
+ if (!week.contains(day)) {
+ startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
+ continue;
+ }
+
+ //大于有效期不进行排课
+ if (startTime.getTimeInMillis() >= useTime.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);
+ this.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);
+ }
+ //增加日期,用于判断
+ startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1);
+ }
+
+ //开始更新剩余课时和有效期
+ coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + classNumber);
+ coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + classNumber);
+ coursePackageOrderStudent.setUseTime(useTime);
+ coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
+ }
+
+ }
}
--
Gitblit v1.7.1