From acad524bfb7f376c09ff8e6600fab207780156e1 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期四, 23 十一月 2023 18:46:05 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java |  622 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 381 insertions(+), 241 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
index cf5625e..b8f931c 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -12,6 +12,7 @@
 import com.dsh.course.feignclient.account.StudentClient;
 import com.dsh.course.feignclient.account.model.Student;
 import com.dsh.course.mapper.CoursePackageSchedulingMapper;
+import com.dsh.course.mapper.CoursePackageStudentMapper;
 import com.dsh.course.model.dto.ToClassDto;
 import com.dsh.course.service.*;
 import com.dsh.course.util.ResultUtil;
@@ -28,6 +29,9 @@
 import javax.swing.text.html.parser.Entity;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -42,7 +46,10 @@
     TCoursePackagePaymentService paymentService;
     @Autowired
     private CourseCounsumService counsumService;
-
+    @Autowired
+    private TCoursePackageService coursePackageService;
+    @Resource
+    private CoursePackageStudentMapper cpsMapper;
     //获取退费记录
     @RequestMapping("/getRefund")
     @ResponseBody
@@ -73,13 +80,16 @@
     @RequestMapping("/bypac")
     @ResponseBody
     public List<Map<String, Object>> bypac(@RequestBody PacQueryDto pacQueryDto) {
-
-
-
-
-
         System.out.println("-====studentQeryDto========="+pacQueryDto);
+        if (pacQueryDto.getStoreIds()!=null && pacQueryDto.getStoreIds().size()!=0){
+            // 根据门店id 查询课包ids
+            List<Integer> coursePackageIds = coursePackageService.list(new QueryWrapper<TCoursePackage>()
+                    .in("storeId", pacQueryDto.getStoreIds())).stream()
+                    .map(TCoursePackage::getId).collect(Collectors.toList());
+            pacQueryDto.setStoreIds(coursePackageIds);
+        }
         List<Map<String, Object>>  pays =  paymentService.bypac(pacQueryDto);
+
         System.out.println("=========pays======"+pays);
 
         return  pays;
@@ -255,12 +265,7 @@
             queryWrapper.like("reason", consumeQuery.getReason());
 
         }
-
         List<CourseCounsum> list = counsumService.list(queryWrapper);
-
-
-
-
 //        List<CourseCounsum> list = counsumService.list(new QueryWrapper<CourseCounsum>().eq("paymentId", consumeQuery.getPayId()).eq("changeType", consumeQuery.getChangeType()).between("insertTime", consumeQuery.getStart(), consumeQuery.getEnd()).like("reason", consumeQuery.getReason()));
         return list;
     }
@@ -321,9 +326,9 @@
     @ResponseBody
     public void zeroClass(@RequestParam("id")Integer id){
         MoneyBack byId = moneyBackService.getById(id);
-        String[] split = byId.getIds().split(",");
-        System.out.println("========split===>"+split);
-        List<TCoursePackagePayment> id1 = paymentService.list(new QueryWrapper<TCoursePackagePayment>().in("id", split));
+        String[] split2 = byId.getIds().split(",");
+        System.out.println("========split===>"+split2);
+        List<TCoursePackagePayment> id1 = paymentService.list(new QueryWrapper<TCoursePackagePayment>().in("id", split2));
         for (TCoursePackagePayment o :id1){
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setNum(o.getLaveClassHours());
@@ -338,6 +343,25 @@
             o.setStatus(2);
             o.setAppUserId(null);
 
+
+
+            TCoursePackage tCoursePackage = packageService.getById(o.getCoursePackageId());
+            String classWeeks = tCoursePackage.getClassWeeks();
+            List<Integer> week = week(classWeeks);
+
+            String[] split = tCoursePackage.getClassStartTime().split(",");
+            String[] split1 = tCoursePackage.getClassEndTime().split(",");
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            // 本周周几
+
+            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId",o.getStudentId()).eq("coursePackageId", o.getCoursePackageId()));
+            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+            //拿到最后一天的排课记录
+            if (collect.size()>0) {
+                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
+                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", o.getStudentId()).eq("coursePackageId", o.getCoursePackageId()));
+            }
 
 
 
@@ -386,27 +410,37 @@
     //课程转移
     @RequestMapping("/toClass")
     @ResponseBody
-    public void toClass(@RequestBody ToClassDto toClassDto){
+    public void toClass(@RequestBody ToClassDto toClassDto) throws ParseException {
         System.out.println("===========到达getSelect======="+toClassDto);
-        TCoursePackagePayment orinPay = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
-        TCoursePackagePayment studentPay = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId",orinPay.getCoursePackageId()));
+        TCoursePackagePayment orinPay =
+                paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", toClassDto.getId()));
+        TCoursePackagePayment studentPay = paymentService.getOne
+                (new QueryWrapper<TCoursePackagePayment>()
+                        .eq("studentId", toClassDto.getToStudentId())
+                        .eq("coursePackageId",orinPay.getCoursePackageId()));
         if (studentPay!=null) {
             System.out.println("======orinPay=====>" + orinPay);
             System.out.println("======studentPay=====>" + studentPay);
             Integer laveClassHours = orinPay.getLaveClassHours();
             Integer totalClassHours = orinPay.getTotalClassHours();
-
             orinPay.setTotalClassHours(0);
             orinPay.setLaveClassHours(0);
-            orinPay.setStatus(5);
+            orinPay.setStatus(1);
             orinPay.setAppUserId(null);
             paymentService.updateById(orinPay);
-
+            //删除orin的排课记录
+            List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
+            List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+            //拿到最后一天的排课记录
+            if (collect1.size()>0){
+                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect1));
+                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
+            }
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
             if (orinPay.getAppUserId()!=studentPay.getAppUserId()){
-                courseCounsum.setReason("赠课");
-            }else {            courseCounsum.setReason("转课");
+                courseCounsum.setReason("课时转移");
+            }else {            courseCounsum.setReason("课时转移");
             }
             courseCounsum.setNum(laveClassHours);
             courseCounsum.setChangeType(0);
@@ -425,11 +459,86 @@
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
-            courseCounsum1.setReason("转课");
+            if (orinPay.getAppUserId()!=studentPay.getAppUserId()){
+                courseCounsum1.setReason("课时转移");
+            }else {            courseCounsum1.setReason("课时转移");
+            }
             courseCounsum1.setNum(laveClassHours);
             courseCounsum1.setChangeType(1);
             courseCounsum1.setPaymentId(studentPay.getId());
             counsumService.save(courseCounsum1);
+
+
+            //排课
+            TCoursePackage tCoursePackage = packageService.getById(studentPay.getCoursePackageId());
+            String classWeeks = tCoursePackage.getClassWeeks();
+            List<Integer> week = week(classWeeks);
+
+            String[] split = tCoursePackage.getClassStartTime().split(",");
+            String[] split1 = tCoursePackage.getClassEndTime().split(",");
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            // 本周周几
+
+            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
+            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+            //拿到最后一天的排课记录
+            if (collect.size()>0) {
+                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
+                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
+            }
+
+            Student student = studentClient.queryStudentById(toClassDto.getToStudentId());
+
+            Date today = new Date();
+
+
+
+
+            TCoursePackagePayment pay = coursePackagePaymentService.getById(studentPay.getId());
+            Integer laveClassHours2 = pay.getLaveClassHours();
+            Integer codeTime = tCoursePackage.getCodeTime();
+            Integer can = 0;
+            int count = 0;
+            // 本周周几
+//        int i = DateUtil.dayOfWeek(new Date())-1;
+
+            Date[] dates = generateDateArray(14,today);
+            can = laveClassHours2/codeTime;
+
+            for (Date date : dates) {
+                if (count==can){
+                    break;
+                }
+                int wei =  DateUtil.dayOfWeek(date);
+                if (week.contains(wei)){
+                    for (int i1 = 0; i1 < split.length; i1++) {
+                        if (count==can){
+                            break;
+                        }
+                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
+                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.insert(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(student.getAppUserId());
+                        student1.setStudentId(student.getId());
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(studentPay.getId());
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                        count++;
+                    }
+                }
+            }
+
 
         }else {
 
@@ -453,15 +562,24 @@
             orinPay.setTotalClassHours(0);
             orinPay.setLaveClassHours(0);
             orinPay.setAppUserId(null);
-            orinPay.setStatus(6);
+            orinPay.setStatus(1);
             paymentService.updateById(orinPay);
 
 
 
+            //删除orin的排课记录
+            List<CoursePackageStudent> studentCourse1 = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()));
+            List<Long> collect1 = studentCourse1.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+            //拿到最后一天的排课记录
+            if (collect1.size()>0) {
+                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect1));
+                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
+            }
+
 
             CourseCounsum courseCounsum = new CourseCounsum();
             courseCounsum.setInsertTime(new Date());
-            courseCounsum.setReason("赠课");
+            courseCounsum.setReason("课时转移");
             courseCounsum.setNum(orinPay.getLaveClassHours());
             courseCounsum.setChangeType(0);
             courseCounsum.setPaymentId(orinPay.getId());
@@ -473,11 +591,82 @@
 
             CourseCounsum courseCounsum1 = new CourseCounsum();
             courseCounsum1.setInsertTime(new Date());
-            courseCounsum1.setReason("赠课");
+            courseCounsum1.setReason("课时转移");
             courseCounsum1.setNum(orinPay.getLaveClassHours());
             courseCounsum1.setChangeType(1);
             courseCounsum1.setPaymentId(to.getId());
             counsumService.save(courseCounsum);
+
+
+
+            TCoursePackage tCoursePackage = packageService.getById(studentPay.getCoursePackageId());
+            String classWeeks = tCoursePackage.getClassWeeks();
+            List<Integer> week = week(classWeeks);
+
+            String[] split = tCoursePackage.getClassStartTime().split(",");
+            String[] split1 = tCoursePackage.getClassEndTime().split(",");
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            // 本周周几
+
+            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
+            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+            //拿到最后一天的排课记录
+            if (collect.size()>0) {
+                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
+                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", toClassDto.getToStudentId()).eq("coursePackageId", studentPay.getCoursePackageId()));
+            }
+
+
+
+            Date today = new Date();
+
+
+
+
+            TCoursePackagePayment pay = coursePackagePaymentService.getById(studentPay.getId());
+            Integer laveClassHours2 = pay.getLaveClassHours();
+            Integer codeTime = tCoursePackage.getCodeTime();
+            Integer can = 0;
+            int count = 0;
+            // 本周周几
+//        int i = DateUtil.dayOfWeek(new Date())-1;
+
+            Date[] dates = generateDateArray(14,today);
+            can = laveClassHours2/codeTime;
+
+            for (Date date : dates) {
+                if (count==can){
+                    break;
+                }
+                int wei =  DateUtil.dayOfWeek(date);
+                if (week.contains(wei)){
+                    for (int i1 = 0; i1 < split.length; i1++) {
+                        if (count==can){
+                            break;
+                        }
+                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
+                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
+                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.insert(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(student.getAppUserId());
+                        student1.setStudentId(student.getId());
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(studentPay.getId());
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                        count++;
+                    }
+                }
+            }
 
         }
 
@@ -486,9 +675,11 @@
 
     @Resource
     private StudentClient studentClient;
+    @Autowired
+    private  CourseCounsumService courseCounsumService;
     @RequestMapping(value = "/toHoli",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
     @ResponseBody
-    public String toHoli(@RequestBody ToHoliDto toHoliDto){
+    public String toHoli(@RequestBody ToHoliDto toHoliDto) throws ParseException {
 
         String [] ids = toHoliDto.getIds();
         List<String> strings = new ArrayList<>();
@@ -515,7 +706,7 @@
             payment.setLaveClassHours(laveClassHoursnew);
             payment.setTotalClassHours(totalClassHoursnew);
             payment.setAppUserId(null);
-            payment.setStatus(3);
+//            payment.setStatus(3);
 
             paymentService.updateById(payment);
 
@@ -534,117 +725,73 @@
             holi.setPayStatus(2);
             paymentService.save(holi);
 
+
+            CourseCounsum courseCounsum = new CourseCounsum();
+            courseCounsum.setPaymentId(holi.getId());
+            courseCounsum.setChangeType(0);
+            courseCounsum.setNum(classNum);
+            courseCounsum.setInsertTime(new Date());
+            courseCounsum.setReason("报名假期班");
+            courseCounsumService.save(courseCounsum);
+
+     //排假期课
+
             TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId());
             String classWeeks = tCoursePackage.getClassWeeks();
             List<Integer> week = week(classWeeks);
 
+            Date today = new Date();
+
+            Date startTime = tCoursePackage.getStartTime();
+            Date endTime = tCoursePackage.getEndTime();
+            LocalDate startDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            LocalDate endDate = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            Period period = Period.between(startDate, endDate);
+            int days = period.getDays() + 1;
+            Integer can =999;
+            int count = 0;
             String[] split = tCoursePackage.getClassStartTime().split(",");
             String[] split1 = tCoursePackage.getClassEndTime().split(",");
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            // 本周周几
-            int i = DateUtil.dayOfWeek(new Date())-1;
-            for (Integer integer : week) {
-                if(integer<i){
-                    // 找下一周的时间
-                    Calendar instance = Calendar.getInstance();
-                    instance.add(Calendar.DATE,7-(i-integer));
-                    Date time = instance.getTime();
 
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(startTime);
+            calendar.add(Calendar.DAY_OF_MONTH, -1);
+
+            Date[] dates = generateDateArray(days,calendar.getTime());
+            for (Date date : dates) {
+                if (count==can){
+                    break;
+                }
+                int wei =  cn.hutool.core.date.DateUtil.dayOfWeek(date)-1;
+                if (wei == 0){
+                    wei =7;
+                }
+                if (week.contains(wei)){
                     for (int i1 = 0; i1 < split.length; i1++) {
-
+                        if (count==can){
+                            break;
+                        }
                         CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        try {
-                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                            Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                            coursePackageScheduling.setClassDate(parse);
-                            coursePackageScheduling.setEndDate(parse1);
-                            coursePackageScheduling.setStatus(1);
-                            coursePackageSchedulingService.insert(coursePackageScheduling);
-
-                            CoursePackageStudent student1 = new CoursePackageStudent();
-                            student1.setAppUserId(student.getAppUserId());
-                            student1.setStudentId(student.getId());
-                            student1.setCoursePackageId(tCoursePackage.getId());
-                            student1.setCoursePackagePaymentId(holi.getId());
-                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                            student1.setSignInOrNot(1);
-                            student1.setReservationStatus(1);
-                            student1.setInsertTime(new Date());
-                            studentService.save(student1);
-                        } catch (ParseException e) {
-                            e.printStackTrace();
-                        }
-
-                    }
-
-                }else if(integer>i) {
-                    Calendar instance = Calendar.getInstance();
-                    instance.add(Calendar.DATE,integer-i);
-                    Date time1 = instance.getTime();
-                    List<Date> list = new ArrayList<>();
-                    list.add(time1);
-                    instance.add(Calendar.DATE,7);
-                    Date time2 = instance.getTime();
-                    list.add(time2);
-                    for (Date time : list) {
-                        for (int i1 = 0; i1 < split.length; i1++) {
-                            CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                            coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                            try {
-                                Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                                Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                                coursePackageScheduling.setClassDate(parse);
-                                coursePackageScheduling.setEndDate(parse1);
-                                coursePackageScheduling.setStatus(1);
-                                coursePackageSchedulingService.insert(coursePackageScheduling);
-
-                                CoursePackageStudent student1 = new CoursePackageStudent();
-                                student1.setAppUserId(student.getAppUserId());
-                                student1.setStudentId(student.getId());
-                                student1.setCoursePackageId(tCoursePackage.getId());
-                                student1.setCoursePackagePaymentId(holi.getId());
-                                student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                                student1.setSignInOrNot(1);
-                                student1.setReservationStatus(1);
-                                student1.setInsertTime(new Date());
-                                studentService.save(student1);
-                            } catch (ParseException e) {
-                                e.printStackTrace();
-                            }
-                        }
-                    }
-
-                }else {
-                    Calendar instance = Calendar.getInstance();
-                    instance.add(Calendar.DATE,7);
-                    Date time = instance.getTime();
-
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        try {
-                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                            Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                            coursePackageScheduling.setClassDate(parse);
-                            coursePackageScheduling.setEndDate(parse1);
-                            coursePackageScheduling.setStatus(1);
-                            coursePackageSchedulingService.insert(coursePackageScheduling);
-
-                            CoursePackageStudent student1 = new CoursePackageStudent();
-                            student1.setAppUserId(student.getAppUserId());
-                            student1.setStudentId(student.getId());
-                            student1.setCoursePackageId(tCoursePackage.getId());
-                            student1.setCoursePackagePaymentId(holi.getId());
-                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                            student1.setSignInOrNot(1);
-                            student1.setReservationStatus(1);
-                            student1.setInsertTime(new Date());
-                            studentService.save(student1);
-                        } catch (ParseException e) {
-                            e.printStackTrace();
-                        }
+                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
+                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.insert(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(student.getAppUserId());
+                        student1.setStudentId(student.getId());
+                        student1.setCoursePackageId(toHoliDto.getClassId());
+                        student1.setCoursePackagePaymentId(holi.getId());
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        studentService.save(student1);
+                        count++;
                     }
                 }
             }
@@ -665,6 +812,23 @@
 
 
 
+    }
+
+
+    @Autowired
+    private TCoursePackagePaymentService coursePackagePaymentService;
+    public static Date[] generateDateArray(int numDays,Date date) {
+//        LocalDate tomorrow = LocalDate.now().plusDays(1);
+        LocalDate tomorrow = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1);
+
+        Date[] dates = new Date[numDays];
+
+        for (int i = 0; i < numDays; i++) {
+            LocalDate currentDate = tomorrow.plusDays(i);
+            dates[i] = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        }
+
+        return dates;
     }
     private List<Integer> week(String week){
         String[] split = week.split(";");
@@ -697,9 +861,12 @@
         return integers;
     }
 
+
+    @Autowired
+    private CoursePackageStudentService coursePackageStudentService;
     @RequestMapping(value = "/toTrans",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
     @ResponseBody
-    public String toTrans(@RequestBody ToHoliDto toHoliDto){
+    public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException {
 
         String [] ids = toHoliDto.getIds();
         List<String> strings = new ArrayList<>();
@@ -733,18 +900,40 @@
 
             //新增课时
 
-            TCoursePackagePayment holi = new TCoursePackagePayment();
-            holi.setAppUserId(student.getAppUserId());
-            holi.setStudentId(student.getId());
-            holi.setCoursePackageId(toHoliDto.getClassId());
-            holi.setTotalClassHours(laveClassHours);
-            holi.setLaveClassHours(laveClassHours);
-            holi.setState(1);
-            holi.setInsertTime(new Date());
-            holi.setPayStatus(2);
-            paymentService.save(holi);
+            TCoursePackagePayment one = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
 
+            TCoursePackagePayment holi = new TCoursePackagePayment();
+            if (one==null){
+                holi.setAppUserId(student.getAppUserId());
+                holi.setStudentId(student.getId());
+                holi.setCoursePackageId(toHoliDto.getClassId());
+                holi.setTotalClassHours(laveClassHours);
+                holi.setLaveClassHours(laveClassHours);
+                holi.setState(1);
+                holi.setInsertTime(new Date());
+                holi.setPayStatus(2);
+                holi.setStatus(1);
+                paymentService.save(holi);
+
+            }else{
+                one.setTotalClassHours(one.getTotalClassHours()+laveClassHours);
+                one.setLaveClassHours(one.getLaveClassHours()+laveClassHours);
+                one.setAppUserId(null);
+                paymentService.updateById(one);
+                holi=one;
+            }
             System.out.println("保存成功=============》="+holi);
+
+
+            CourseCounsum courseCounsum = new CourseCounsum();
+            courseCounsum.setPaymentId(holi.getId());
+            courseCounsum.setChangeType(1);
+            courseCounsum.setNum(laveClassHours);
+            courseCounsum.setInsertTime(new Date());
+            courseCounsum.setReason("换课");
+            courseCounsumService.save(courseCounsum);
+
+
 
             TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId());
             String classWeeks = tCoursePackage.getClassWeeks();
@@ -755,112 +944,67 @@
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
             // 本周周几
-            int i = DateUtil.dayOfWeek(new Date())-1;
-            for (Integer integer : week) {
-                if(integer<i){
-                    // 找下一周的时间
-                    Calendar instance = Calendar.getInstance();
-                    instance.add(Calendar.DATE,7-(i-integer));
-                    Date time = instance.getTime();
 
+            List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
+            List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+            //拿到最后一天的排课记录
+            if (collect.size()>0) {
+                coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
+                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
+            }
+
+
+            Date today = new Date();
+
+
+
+
+            TCoursePackagePayment pay = coursePackagePaymentService.getById(holi.getId());
+            Integer laveClassHours1 = pay.getLaveClassHours();
+            Integer codeTime = tCoursePackage.getCodeTime();
+            Integer can = 0;
+
+
+            int count = 0;
+
+            // 本周周几
+//        int i = DateUtil.dayOfWeek(new Date())-1;
+
+            Date[] dates = generateDateArray(14,today);
+                can = laveClassHours1/codeTime;
+
+            for (Date date : dates) {
+                if (count==can){
+                    break;
+                }
+                int wei =  DateUtil.dayOfWeek(date);
+                if (week.contains(wei)){
                     for (int i1 = 0; i1 < split.length; i1++) {
-
+                        if (count==can){
+                            break;
+                        }
                         CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                         coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        try {
-                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                            Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                            coursePackageScheduling.setClassDate(parse);
-                            coursePackageScheduling.setEndDate(parse1);
-                            coursePackageScheduling.setStatus(1);
-                            coursePackageSchedulingService.insert(coursePackageScheduling);
-
-                            CoursePackageStudent student1 = new CoursePackageStudent();
-                            student1.setAppUserId(student.getAppUserId());
-                            student1.setStudentId(student.getId());
-                            student1.setCoursePackageId(tCoursePackage.getId());
-                            student1.setCoursePackagePaymentId(holi.getId());
-                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                            student1.setSignInOrNot(1);
-                            student1.setReservationStatus(1);
-                            student1.setInsertTime(new Date());
-                            studentService.save(student1);
-                        } catch (ParseException e) {
-                            e.printStackTrace();
-                        }
-
-                    }
-
-                }else if(integer>i) {
-                    Calendar instance = Calendar.getInstance();
-                    instance.add(Calendar.DATE,integer-i);
-                    Date time1 = instance.getTime();
-                    List<Date> list = new ArrayList<>();
-                    list.add(time1);
-                    instance.add(Calendar.DATE,7);
-                    Date time2 = instance.getTime();
-                    list.add(time2);
-                    for (Date time : list) {
-                        for (int i1 = 0; i1 < split.length; i1++) {
-                            CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                            coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                            try {
-                                Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                                Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                                coursePackageScheduling.setClassDate(parse);
-                                coursePackageScheduling.setEndDate(parse1);
-                                coursePackageScheduling.setStatus(1);
-                                coursePackageSchedulingService.insert(coursePackageScheduling);
-
-                                CoursePackageStudent student1 = new CoursePackageStudent();
-                                student1.setAppUserId(student.getAppUserId());
-                                student1.setStudentId(student.getId());
-                                student1.setCoursePackageId(tCoursePackage.getId());
-                                student1.setCoursePackagePaymentId(holi.getId());
-                                student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                                student1.setSignInOrNot(1);
-                                student1.setReservationStatus(1);
-                                student1.setInsertTime(new Date());
-                                studentService.save(student1);
-                            } catch (ParseException e) {
-                                e.printStackTrace();
-                            }
-                        }
-                    }
-
-                }else {
-                    Calendar instance = Calendar.getInstance();
-                    instance.add(Calendar.DATE,7);
-                    Date time = instance.getTime();
-
-                    for (int i1 = 0; i1 < split.length; i1++) {
-                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
-                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
-                        try {
-                            Date parse = format1.parse(format.format(time) + " " + split[i1]);
-                            Date parse1 = format1.parse(format.format(time) + " " + split1[i1]);
-                            coursePackageScheduling.setClassDate(parse);
-                            coursePackageScheduling.setEndDate(parse1);
-                            coursePackageScheduling.setStatus(1);
-                            coursePackageSchedulingService.insert(coursePackageScheduling);
-
-                            CoursePackageStudent student1 = new CoursePackageStudent();
-                            student1.setAppUserId(student.getAppUserId());
-                            student1.setStudentId(student.getId());
-                            student1.setCoursePackageId(tCoursePackage.getId());
-                            student1.setCoursePackagePaymentId(holi.getId());
-                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
-                            student1.setSignInOrNot(1);
-                            student1.setReservationStatus(1);
-                            student1.setInsertTime(new Date());
-                            studentService.save(student1);
-                        } catch (ParseException e) {
-                            e.printStackTrace();
-                        }
+                        Date parse = format1.parse(format.format(date) + " " + split[i1]);
+                        Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
+                        coursePackageScheduling.setClassDate(parse);
+                        coursePackageScheduling.setEndDate(parse1);
+                        coursePackageScheduling.setStatus(1);
+                        coursePackageSchedulingService.insert(coursePackageScheduling);
+                        CoursePackageStudent student1 = new CoursePackageStudent();
+                        student1.setAppUserId(student.getAppUserId());
+                        student1.setStudentId(student.getId());
+                        student1.setCoursePackageId(tCoursePackage.getId());
+                        student1.setCoursePackagePaymentId(holi.getId());
+                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
+                        student1.setSignInOrNot(1);
+                        student1.setReservationStatus(1);
+                        student1.setInsertTime(new Date());
+                        cpsMapper.insert(student1);
+                        count++;
                     }
                 }
             }
-
 
 
 
@@ -870,10 +1014,6 @@
         String join = StringUtils.join(stringArray, ",");
         System.out.println("==========join========"+join);
         return "转课成功";
-
-
-
-
     }
 
 

--
Gitblit v1.7.1