From daecfaafcad59e676622d1dc224880039d4a0df3 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 11 十二月 2023 19:08:37 +0800 Subject: [PATCH] 修改bug --- cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 97 insertions(+), 16 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 b8e875a..f3f89c2 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 @@ -7,6 +7,7 @@ import com.dsh.course.entity.*; import com.dsh.course.feignclient.account.StudentClient; import com.dsh.course.feignclient.account.model.Student; +import com.dsh.course.feignclient.account.model.TStudent; import com.dsh.course.mapper.CoursePackageSchedulingMapper; import com.dsh.course.mapper.CoursePackageStudentMapper; import com.dsh.course.model.QueryCoursePackageSchedulingList; @@ -18,6 +19,7 @@ import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * @author zhibing.pu @@ -49,6 +51,9 @@ @Resource private StudentClient studentClient; + + @Autowired + private CourseCounsumService courseCounsumService; /** @@ -111,7 +116,7 @@ coursePackageSchedulingMapper.updateById(coursePackageScheduling); TCoursePackage coursePackage = coursePackageService.getById(coursePackageScheduling.getCoursePackageId()); - if (coursePackage.getStatus() == 1) { + if (null != coursePackage && coursePackage.getStatus() == 1) { coursePackage.setStatus(2); coursePackageService.updateById(coursePackage); } @@ -163,6 +168,15 @@ .gt("useTime", "now()") .gt("laveClassHours", 0) ); + + List<CoursePackageOrder> list1 = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>() + .eq("payStatus", 2) + .eq("status", 1) + .eq("state", 1) + .gt("laveClassHours", 0) + .orderByAsc("insertTime") + ); + for (CoursePackageOrderStudent coursePackageOrderStudent : list) { CoursePackageScheduling coursePackageScheduling = this.getOne(new QueryWrapper<CoursePackageScheduling>() .eq("appUserId", coursePackageOrderStudent.getAppUserId()) @@ -207,9 +221,12 @@ .eq("status", 1) .eq("type", 1) ); - laveClassHours -= count; - Integer codeTime = coursePackage.getCodeTime(); + laveClassHours -= count; + //剩余数量不足以排课 + if (laveClassHours.compareTo(codeTime) < 0) { + break; + } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //生成一周的排课数据 for (int i = 0; i < num; i++) { @@ -320,7 +337,7 @@ TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); Integer codeTime = coursePackage.getCodeTime(); Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours(); - Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId()); + Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()); Date validity = student.getValidity(); Calendar calendar = Calendar.getInstance(); @@ -344,7 +361,7 @@ //从第二天开始 Calendar startTime = Calendar.getInstance(); startTime.setTime(new Date()); - startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); + startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1); startTime.set(Calendar.HOUR_OF_DAY, 0); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.SECOND, 0); @@ -414,12 +431,26 @@ } }else{ - Date classDate = coursePackageScheduling.getClassDate(); - if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){ + Date classDate = new Date(); + + if (coursePackageScheduling!=null){ + classDate = coursePackageScheduling.getClassDate(); + } + + int count = this.count(new QueryWrapper<CoursePackageScheduling>() + .eq("appUserId", coursePackageOrderStudent.getAppUserId()) + .eq("studentId", coursePackageOrderStudent.getStudentId()) + .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()) + .eq("status", 1) + ); + + Integer number = laveClassHours - count; + if((number.compareTo(codeTime) > 0 && calendar.getTimeInMillis() > classDate.getTime())||coursePackageScheduling==null){ //从第二天开始 Calendar startTime = Calendar.getInstance(); - startTime.setTime(new Date()); - startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); +// startTime.setTime(coursePackageScheduling.getClassDate()); + startTime.setTime(classDate); + startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1); startTime.set(Calendar.HOUR_OF_DAY, 0); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.SECOND, 0); @@ -431,13 +462,13 @@ String classWeeks = coursePackage.getClassWeeks(); List<Integer> week = week(classWeeks); //新剩余课时 - laveClassHours += classNumber; + number += classNumber; //判断最后一天是否所有时段都已排完 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 format = sdf.format(classDate); + String time = format.substring(0,format.indexOf(" ") + 1); String classStartTime = coursePackage.getClassStartTime(); String classEndTime = coursePackage.getClassEndTime(); String[] split = classStartTime.split(","); @@ -448,10 +479,10 @@ n++; for (int i = n; i < split.length; i++) { //剩余数量不足以排课 - if (laveClassHours.compareTo(codeTime) < 0) { + if (number.compareTo(codeTime) < 0) { break; } - laveClassHours -= codeTime; + number -= codeTime; CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); packageScheduling.setType(coursePackage.getType()); packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); @@ -493,11 +524,11 @@ } for (int j = 0; j < split.length; j++) { //剩余数量不足以排课 - if (laveClassHours.compareTo(codeTime) < 0) { + if (number.compareTo(codeTime) < 0) { break; } - laveClassHours -= codeTime; + number -= codeTime; CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); packageScheduling.setType(coursePackage.getType()); @@ -533,9 +564,59 @@ coursePackageOrderStudent.setUseTime(useTime); coursePackageOrderStudent.setStatus(1); coursePackageOrderStudentService.updateById(coursePackageOrderStudent); + if(null == student.getValidity()){ + student.setValidity(useTime); + }else if(student.getValidity().getTime() < useTime.getTime()){ + student.setValidity(useTime); + } + studentClient.frozen(student); }catch (Exception e){ e.printStackTrace(); } + } + + + /** + * 过时清零排课记录及剩余课时数据 + */ + @Override + public void taskOverdueClearing() { + List<TStudent> tStudents = studentClient.queryExpiredList(); + for (TStudent tStudent : tStudents) { + List<CoursePackageScheduling> list1 = this.list(new QueryWrapper<CoursePackageScheduling>() + .eq("type", 1) + .eq("studentId", tStudent.getId()) + .eq("status", 1) + ); + if(list1.size() > 0){ + List<Long> collect = list1.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList()); + this.removeByIds(collect); + coursePackageStudentMapper.delete(new QueryWrapper<CoursePackageStudent>() + .in("coursePackageSchedulingId", collect) + ); + } + + List<CoursePackageOrderStudent> list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>() + .eq("studentId", tStudent.getId()) + .eq("status", 1) + .eq("state", 1) + ); + for (CoursePackageOrderStudent coursePackageOrderStudent : list) { + CourseCounsum courseCounsum = new CourseCounsum(); + courseCounsum.setChangeType(0); + courseCounsum.setNum(coursePackageOrderStudent.getLaveClassHours()); + courseCounsum.setReason("有效期结束清楚剩余课时"); + courseCounsum.setInsertTime(new Date()); + courseCounsum.setAppUserId(coursePackageOrderStudent.getAppUserId()); + courseCounsumService.save(courseCounsum); + coursePackageOrderStudent.setLaveClassHours(0); + } + if(list.size() > 0){ + coursePackageOrderStudentService.updateBatchById(list); + } + } + + } } -- Gitblit v1.7.1