cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -48,6 +48,9 @@ import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -603,9 +606,17 @@ .filter(record -> { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String substring = record.getTimeFrame().substring(11); String substring = record.getTimeFrame().substring(0,16); Date time = sdf.parse(substring); return !time.before(lastWeekStartDate) && !time.after(lastOfDate); Instant instant = time.toInstant(); LocalDate dateToCheck = instant.atZone(ZoneId.systemDefault()).toLocalDate(); // 获取今天的日期 LocalDate today = LocalDate.now(); // 计算一周前的日期 LocalDate oneWeekAgo = today.minusWeeks(1); // 计算一周后的日期 LocalDate oneWeekLater = today.plusWeeks(1); return dateToCheck.isAfter(oneWeekAgo) && dateToCheck.isBefore(oneWeekLater); } catch (ParseException e) { e.printStackTrace(); return false; @@ -618,9 +629,18 @@ recordAppoints = recordAppoints.stream() .filter(record -> { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date time = sdf.parse(record.getTimeFrame().substring(11)); return !time.before(lastMonthStartDate) && !time.after(lastOfDate); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String substring = record.getTimeFrame().substring(0,16); Date time = sdf.parse(substring); Instant instant = time.toInstant(); LocalDate dateToCheck = instant.atZone(ZoneId.systemDefault()).toLocalDate(); // 获取今天的日期 LocalDate today = LocalDate.now(); // 计算一周前的日期 LocalDate oneWeekAgo = today.minusMonths(1); // 计算一周后的日期 LocalDate oneWeekLater = today.plusMonths(1); return dateToCheck.isAfter(oneWeekAgo) && dateToCheck.isBefore(oneWeekLater); } catch (ParseException e) { e.printStackTrace(); return false; @@ -634,8 +654,17 @@ .filter(record -> { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date time = sdf.parse(record.getTimeFrame().substring(11)); return !time.before(lastYearStartDate) && !time.after(lastOfDate); String substring = record.getTimeFrame().substring(0,16); Date time = sdf.parse(substring); Instant instant = time.toInstant(); LocalDate dateToCheck = instant.atZone(ZoneId.systemDefault()).toLocalDate(); // 获取今天的日期 LocalDate today = LocalDate.now(); // 计算一周前的日期 LocalDate oneWeekAgo = today.minusYears(1); // 计算一周后的日期 LocalDate oneWeekLater = today.plusYears(1); return dateToCheck.isAfter(oneWeekAgo) && dateToCheck.isBefore(oneWeekLater); } catch (ParseException e) { e.printStackTrace(); return false; cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -450,7 +450,9 @@ CourseCounsum courseCounsum = new CourseCounsum(); courseCounsum.setInsertTime(new Date()); if (orinPay.getAppUserId().compareTo(studentPay.getAppUserId()) != 0) { Integer appUserId = orinPay.getAppUserId(); Integer appUserId1 = studentPay.getAppUserId(); if (appUserId.compareTo(appUserId1) != 0) { courseCounsum.setReason("课时赠送"); } else { courseCounsum.setReason("课时转移"); @@ -466,19 +468,9 @@ courseCounsum.setPaymentId(orinPay.getId()); counsumService.save(courseCounsum); Integer laveClassHours1 = studentPay.getLaveClassHours(); Integer totalClassHours1 = studentPay.getTotalClassHours(); int total = totalClassHours + totalClassHours1; int lave = laveClassHours + laveClassHours1; studentPay.setAppUserId(null); studentPay.setLaveClassHours(lave); studentPay.setTotalClassHours(total); orderStudentService.updateById(studentPay); CourseCounsum courseCounsum1 = new CourseCounsum(); courseCounsum1.setInsertTime(new Date()); if (orinPay.getAppUserId().compareTo(studentPay.getAppUserId()) != 0) { if (appUserId.compareTo(appUserId1) != 0) { courseCounsum1.setReason("课时赠送"); } else { courseCounsum1.setReason("课时转移"); @@ -491,7 +483,7 @@ schedulingService.addNewCoursePackageScheduling(studentPay.getId(),laveClassHours); //删除原排课数据 List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() .eq("type", 1).eq("appUserId", orinPay.getAppUserId()) .eq("type", 1).eq("appUserId", appUserId) .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()) .orderByAsc("classDate")); int num = totalClassHours - laveClassHours; @@ -501,12 +493,13 @@ coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId())); } } else { Integer totalClassHours = orinPay.getTotalClassHours(); Integer laveClassHours = orinPay.getLaveClassHours(); Student student = studentClient.queryStudentById(toClassDto.getToStudentId()); CoursePackageOrderStudent to = new CoursePackageOrderStudent(); to.setStudentId(toClassDto.getToStudentId()); to.setTotalClassHours(totalClassHours); to.setTotalClassHours(laveClassHours); to.setLaveClassHours(laveClassHours); to.setCoursePackageId(orinPay.getCoursePackageId()); to.setState(1); @@ -519,10 +512,9 @@ calendar.setTime(new Date()); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays); to.setUseTime(calendar.getTime()); orderStudentService.save(to); Integer appUserId = orinPay.getAppUserId(); orinPay.setLaveClassHours(0); orinPay.setAppUserId(null); orinPay.setStatus(6); @@ -544,13 +536,13 @@ courseCounsum1.setNum(orinPay.getLaveClassHours()); courseCounsum1.setChangeType(1); courseCounsum1.setPaymentId(to.getId()); counsumService.save(courseCounsum); counsumService.save(courseCounsum1); //开始排课 addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to); //删除原排课数据 List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() .eq("type", 1).eq("appUserId", orinPay.getAppUserId()) .eq("type", 1).eq("appUserId", appUserId) .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()) .orderByAsc("classDate")); int num = totalClassHours - laveClassHours; cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java
@@ -300,6 +300,7 @@ */ @Override public void addNewCoursePackageScheduling(Long coursePackageOrderStudentId, Integer classNumber) { try { CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(coursePackageOrderStudentId); CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>() .eq("appUserId", coursePackageOrderStudent.getAppUserId()) @@ -312,7 +313,6 @@ 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()); @@ -323,8 +323,89 @@ calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); //新有效期 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(); //剩余课时已不足以继续排课,且最后一次的排课时间是在本周(因为定时任务会周一凌晨去继续进行排课处理 // 如果最后一次排课时间不是本周,则直接增加剩余课时,剩余排课逻辑交由定时任务处理) if(0 == laveClassHours){ //从第二天开始 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; String classStartTime = coursePackage.getClassStartTime(); String classEndTime = coursePackage.getClassEndTime(); String[] split = classStartTime.split(","); String[] split1 = classEndTime.split(","); 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; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); 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()); Date parse = sdf.parse(sdf1.format(time1) + " " + split[j]); Date parse1 = sdf.parse(sdf1.format(time1) + " " + split1[j]); packageScheduling.setClassDate(parse); packageScheduling.setEndDate(parse1); 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); } }else{ Date classDate = coursePackageScheduling.getClassDate(); if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){ //从第二天开始 Calendar startTime = Calendar.getInstance(); @@ -342,11 +423,6 @@ 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"); @@ -372,14 +448,10 @@ 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(); @@ -423,14 +495,10 @@ 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(); @@ -447,12 +515,17 @@ //增加日期,用于判断 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); coursePackageOrderStudent.setStatus(1); coursePackageOrderStudentService.updateById(coursePackageOrderStudent); }catch (Exception e){ e.printStackTrace(); } } cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1176,7 +1176,7 @@ for (String id : split) { if(coursePackage.getType() == 1){ CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", id) .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("status", 1).eq("state", 1)); .eq("coursePackageId", coursePackageOrder.getCoursePackageId()).eq("state", 1)); if (null == coursePackageOrderStudent) { coursePackageOrderStudent = new CoursePackageOrderStudent(); coursePackageOrderStudent.setAppUserId(coursePackageOrder.getAppUserId()); @@ -1208,6 +1208,7 @@ courseCounsum.setReason("购买课包"); courseCounsumService.save(courseCounsum); //账单记录 if(coursePackageOrder.getPayType() != 3){ CourseCounsum courseCounsum1 = new CourseCounsum(); courseCounsum1.setPaymentId(coursePackageOrder.getId()); courseCounsum1.setChangeType(3); @@ -1215,11 +1216,14 @@ courseCounsum1.setReason("报名课程;"+coursePackageOrder.getCashPayment()); courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId()); courseCounsumService.save(courseCounsum1); } } else { Date useTime = coursePackageOrderStudent.getUseTime(); coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + coursePackagePaymentConfig.getClassHours()); coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + coursePackagePaymentConfig.getClassHours()); coursePackageOrderStudent.setStatus(1); Integer validDays = coursePackage.getValidDays(); Calendar calendar = Calendar.getInstance(); calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime); @@ -1240,6 +1244,7 @@ courseCounsum.setReason("续课"); courseCounsumService.save(courseCounsum); //账单记录 if(coursePackageOrder.getPayType() != 3){ CourseCounsum courseCounsum1 = new CourseCounsum(); courseCounsum1.setPaymentId(coursePackageOrder.getId()); courseCounsum1.setChangeType(3); @@ -1247,6 +1252,7 @@ courseCounsum1.setReason("续课;"+coursePackageOrder.getCashPayment()); courseCounsum1.setAppUserId(coursePackageOrder.getAppUserId()); courseCounsumService.save(courseCounsum1); } } cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -556,6 +556,7 @@ integers.add(coursePackageScheduling.getId()); coursePackageScheduling.setCancelClasses(cancelClasses); coursePackageScheduling.setDeductClassHour(deductClassHour); coursePackageScheduling.setStatus(3); }