44323
2023-12-23 aa2c6d722ed799290285b6365f011aaa74373d73
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -50,7 +50,6 @@
    private TCoursePackageService coursePackageService;
    @Resource
    private CoursePackageStudentMapper cpsMapper;
    //获取退费记录
    @RequestMapping("/getRefund")
    @ResponseBody
@@ -58,39 +57,19 @@
        // 查询已通过申请的退费记录
        return counsumService.getRefund();
    }
    @Resource
    private CoursePackageSchedulingMapper coursePackageSchedulingService;
    @RequestMapping("/getStudentTotal")
    @ResponseBody
    public List<Map<String, Object>> get(@RequestBody StudentQeryDto studentQeryDto) {
        System.out.println("-====studentQeryDto=========" + studentQeryDto);
        List<Map<String, Object>> pays = paymentService.getStudentTotal(studentQeryDto);
        System.out.println("=========pays======" + pays);
        return pays;
    }
    @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;
    }
@@ -106,6 +85,21 @@
        return collect;
    }
    @ResponseBody
    @PostMapping("/queryAble")
    public Integer queryAble(@RequestBody Integer id) {
        int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id));
        if (coursePackageId>0){
            return 1;
        }else {
            return 0;
        }
    }
    //获取学员课时数信息
    @RequestMapping("/getInfo")
@@ -126,6 +120,8 @@
        studentClassInfo.setInDate(minDate);
        System.out.println("===========>" + studentClassInfo);
//        appUserClient.queryGift(tStudentId);
        return studentClassInfo;
    }
@@ -136,7 +132,9 @@
        System.out.println("==========getClassList===tStudentId====" + tStudentId);
        List<ClassListDto> listDtos = studentService.getClassList(tStudentId);
        for (ClassListDto dto : listDtos) {
            dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours());
            if (dto.getClassType()!=2) {
                dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours());
            }
        }
        System.out.println("======listDtos======" + listDtos);
        return listDtos;
@@ -287,7 +285,14 @@
    @RequestMapping("/insertBack")
    @ResponseBody
    public void insertBack(@RequestBody InsertBackDto insertBackDto) {
    public Integer insertBack(@RequestBody InsertBackDto insertBackDto) {
        List<MoneyBack> ids = moneyBackService.list(new QueryWrapper<MoneyBack>().eq("ids", insertBackDto.getIds()));
        if (!ids.isEmpty()){
            return 1 ;
        }
        MoneyBack moneyBack = new MoneyBack();
        moneyBack.setStudentId(insertBackDto.getId());
@@ -303,16 +308,34 @@
        for (CoursePackageOrderStudent o : pays) {
            o.setStatus(4);
            o.setAppUserId(null);
            List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>().eq("studentId", o.getStudentId()).eq("coursePackageId", o.getCoursePackageId()).ge("classDate", new Date()));
            List<Long> scs = new ArrayList<>();
            for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
                scs.add(coursePackageScheduling.getId());
            }
            coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().in("coursePackageSchedulingId",scs));
            coursePackageSchedulingService.deleteBatchIds(scs);
        }
        orderStudentService.updateBatchById(pays);
        return 0;
    }
    @Autowired
    private ICoursePackageOrderService coursePackageOrderService;
    @Autowired
    private ICoursePackageOrderStudentService coursePackageOrderStudentService;
    @RequestMapping("/queryByIds")
    @ResponseBody
    public List<TCoursePackagePayment> queryByIds(@RequestParam("ids") String ids) {
        List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>()
    public List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids") String ids) {
        List<CoursePackageOrderStudent> paymentList = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                .in("id", Arrays.asList(ids.split(","))));
        System.out.println("========client==>" + paymentList);
@@ -328,6 +351,8 @@
    }
    @RequestMapping("/noStatus")
    @ResponseBody
    public void noStatus(@RequestParam("id") Integer id) {
@@ -339,6 +364,7 @@
        for (CoursePackageOrderStudent o : pays) {
            o.setStatus(1);
            o.setAppUserId(null);
            schedulingService.addNewCoursePackageScheduling(o.getId(),o.getLaveClassHours());
        }
        orderStudentService.updateBatchById(pays);
@@ -390,18 +416,30 @@
    }
    @RequestMapping("/getOrder")
    @ResponseBody
    public List<CoursePackageOrder> getOrder(@RequestParam("id") Long id) {
        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(id);
        List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).like("studentIds", coursePackageOrderStudent.getStudentId()));
            return  list;
    }
    @RequestMapping("/backStausClass")
    @ResponseBody
    public void backStausClass(@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));
        for (TCoursePackagePayment o : id1) {
            o.setStatus(1);
            o.setAppUserId(null);
        }
        paymentService.updateBatchById(id1);
//        MoneyBack byId = moneyBackService.getById(id);
//        String[] split = byId.getIds().split(",");
//        System.out.println("========split===>" + split);
//        List<CoursePackageOrderStudent> id1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().in("id", split));
//        for (CoursePackageOrderStudent o : id1) {
//            o.setStatus(1);
//            o.setAppUserId(null);
//        }
//        coursePackageOrderStudentService.updateBatchById(id1);
    }
    @RequestMapping("/cancel")
@@ -726,133 +764,136 @@
    @RequestMapping(value = "/toHoli", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    @ResponseBody
    public String toHoli(@RequestBody ToHoliDto toHoliDto) throws ParseException {
        String[] ids = toHoliDto.getIds();
        List<String> strings = new ArrayList<>();
        for (String id : ids) {
            //扣除课时
            TCoursePackagePayment payment = paymentService.getById(id);
            System.out.println("=====byId=========" + payment);
            Integer laveClassHours = payment.getLaveClassHours();
            Integer classNum = toHoliDto.getClassNum();
            Integer totalClassHours = payment.getTotalClassHours();
            Student student = studentClient.queryStudentById(payment.getStudentId());
            if (laveClassHours < classNum) {
                strings.add(student.getName());
                continue;
        String[] stuIds = toHoliDto.getIds();
        //查询出学员ids对应的棵树,判断剩余课时数是否够
        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
        List<String> notStudent = new ArrayList<>();
        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
            }
        }
        if (!notStudent.isEmpty()) {
            String notStudentStr = String.join(",", notStudent);
            return notStudentStr+":课时数不足";
        }
            Integer laveClassHoursnew = laveClassHours - classNum;
            Integer totalClassHoursnew = totalClassHours - classNum;
            payment.setLaveClassHours(laveClassHoursnew);
            payment.setTotalClassHours(totalClassHoursnew);
            payment.setAppUserId(null);
//            payment.setStatus(3);
        for (String stuId : stuIds) {
            Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
            paymentService.updateById(payment);
            // 扣除 原来的课时数
        // 添加购买课时 paytyoe为7
        // 排课可期  判断课程时间段  添加排课表  添加上课记录表
        // 找到原来的课包 扣课时
//        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(toHoliDto.getId());
        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId));
            //获取student信息
        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
        TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId());
        //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
                .eq("type", 1).orderByDesc("classDate"));
        //已经排课但没有使用的课时数量
        int number = list1.size() * coursePackage.getNeedNum();
        Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
        laveClassHours1 -= number;
        //需要购买使用的课时数
        Integer num = toHoliDto.getClassNum();
        //需要删除多余的排课记录
        if(num.compareTo(laveClassHours1) > 0){
            //课时数差额
            int number1 = num - laveClassHours1;
            double o = number1 % coursePackage.getNeedNum();
            int l = 0;
            if(0 != o){
                l = 1;
            }
            int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
            for (int i = 0; i < n; i++) {
                CoursePackageScheduling coursePackageScheduling = list1.get(i);
                coursePackageSchedulingService.deleteById(coursePackageScheduling.getId());
            //新增课时
                coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
                        .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
            }
        }
            coursePackageOrderStudent.setAppUserId(null);
        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum());
            orderStudentService.updateById(coursePackageOrderStudent);
            TCoursePackagePayment holi = new TCoursePackagePayment();
            holi.setAppUserId(student.getAppUserId());
            holi.setStudentId(student.getId());
            holi.setCoursePackageId(toHoliDto.getClassId());
            holi.setTotalClassHours(toHoliDto.getClassNum());
            holi.setLaveClassHours(toHoliDto.getClassNum());
            holi.setState(1);
            holi.setInsertTime(new Date());
            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();
            //上课星期
            String classWeeks = coursePackage1.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(",");
            //上课时段
            String[] split = coursePackage1.getClassStartTime().split(",");
            String[] split1 = coursePackage1.getClassEndTime().split(",");
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            Date startTime = coursePackage1.getStartTime();
            Date endTime = coursePackage1.getEndTime();
            //排课 本周+下周,课时不够扣则直接剩余不排课
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(startTime);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            //假期开始使用当前时间为起始时间进行排课
            calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            while (true) {
                Date time = calendar.getTime();
            Date[] dates = generateDateArray(days, calendar.getTime());
            for (Date date : dates) {
                if (count == can) {
                //判断当天是否在排课星期内
                int day = calendar.get(Calendar.DAY_OF_WEEK);
                day = day - 1 == 0 ? 7 : day - 1;
                if (!week.contains(day)) {
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                    continue;
                }
                //大于有效期不进行排课
                if (calendar.getTimeInMillis() > endTime.getTime()) {
                    break;
                }
                int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date) - 1;
                if (wei == 0) {
                    wei = 7;
                for (int j = 0; j < split.length; j++) {
                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                    coursePackageScheduling.setType(coursePackage1.getType());
                    coursePackageScheduling.setAppUserId(student.getAppUserId());
                    coursePackageScheduling.setStudentId(Integer.valueOf(stuId));
                    coursePackageScheduling.setCoursePackageId(coursePackage1.getId());
                    Date parse = format1.parse(format.format(time) + " " + split[j]);
                    Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                    coursePackageScheduling.setClassDate(parse);
                    coursePackageScheduling.setEndDate(parse1);
                    coursePackageScheduling.setStatus(1);
                    coursePackageSchedulingService.insert(coursePackageScheduling);
                    CoursePackageStudent student1 = new CoursePackageStudent();
                    student1.setAppUserId(student.getAppUserId());
                    student1.setStudentId(Integer.valueOf(stuId));
                    student1.setCoursePackageId(coursePackage1.getId());
                    student1.setCoursePackagePaymentId(null);
                    student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                    student1.setSignInOrNot(1);
                    student1.setReservationStatus(1);
                    student1.setInsertTime(new Date());
                    cpsMapper.insert(student1);
                }
                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(toHoliDto.getClassId());
                        student1.setCoursePackagePaymentId(holi.getId());
                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                        student1.setSignInOrNot(1);
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        studentService.save(student1);
                        count++;
                    }
                }
                //增加日期,用于判断
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            }
            System.out.println("保存成功=============》=" + holi);
        CourseCounsum courseCounsum = new CourseCounsum();
        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
        courseCounsum.setChangeType(0);
        courseCounsum.setNum(toHoliDto.getClassNum());
        courseCounsum.setInsertTime(new Date());
        courseCounsum.setReason("报名假期班");
//        courseCounsum.setAppUserId(userId);
        courseCounsumService.save(courseCounsum);
        }
        String[] stringArray = strings.toArray(new String[strings.size()]);
        String join = StringUtils.join(stringArray, ",");
        System.out.println("==========join========" + join);
        return join;
        return "报名成功";
    }
@@ -913,150 +954,149 @@
    @RequestMapping(value = "/toTrans", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8")
    @ResponseBody
    public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException {
        String[] ids = toHoliDto.getIds();
        List<String> strings = new ArrayList<>();
        for (String id : ids) {
            //扣除课时
            TCoursePackagePayment payment = paymentService.getById(id);
            System.out.println("=====byId=========" + payment);
            Integer laveClassHours = payment.getLaveClassHours();
            Integer classNum = toHoliDto.getClassNum();
            Integer totalClassHours = payment.getTotalClassHours();
            Student student = studentClient.queryStudentById(payment.getStudentId());
//            if (laveClassHours < classNum){
//                strings.add(student.getName()); continue;
        String[] stuIds = toHoliDto.getIds();
//        //查询出学员ids对应的棵树,判断剩余课时数是否够
//        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
//        List<String> notStudent = new ArrayList<>();
//        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
//            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
//                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
//            }
//
//            Integer laveClassHoursnew = laveClassHours - classNum;
//            Integer totalClassHoursnew = totalClassHours - classNum;
            payment.setLaveClassHours(0);
            payment.setTotalClassHours(0);
            payment.setAppUserId(null);
//        }
//        if (!notStudent.isEmpty()) {
//            String notStudentStr = String.join(",", notStudent);
//            return notStudentStr+":课时数不足";
//        }
            paymentService.updateById(payment);
            //获取student信息
        //转移课程
        for (String stuId : stuIds) {
//            CoursePackageOrderStudent orinPay = orderStudentService.getById(toHoliDto.getId());
            CoursePackageOrderStudent orinPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
                    .eq("studentId", stuId)
                    .eq("coursePackageId", toHoliDto.getId()));
            CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
                    .eq("studentId", stuId)
                    .eq("coursePackageId", toHoliDto.getClassId()));
            TCoursePackage coursePackage = packageService.getById(toHoliDto.getClassId());
            if (studentPay != null) {
                //转移
                Integer laveClassHours = orinPay.getLaveClassHours();
                Integer totalClassHours = orinPay.getTotalClassHours();
            //新增课时
                CourseCounsum courseCounsum = new CourseCounsum();
                courseCounsum.setInsertTime(new Date());
                Integer appUserId = orinPay.getAppUserId();
                Integer appUserId1 = studentPay.getAppUserId();
            TCoursePackagePayment one = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId()));
                    courseCounsum.setReason("换课");
            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);
                orinPay.setLaveClassHours(0);
                orinPay.setStatus(3);
                orinPay.setAppUserId(null);
                orderStudentService.updateById(orinPay);
                courseCounsum.setNum(laveClassHours);
                courseCounsum.setChangeType(0);
                courseCounsum.setPaymentId(orinPay.getId());
                counsumService.save(courseCounsum);
                CourseCounsum courseCounsum1 = new CourseCounsum();
                courseCounsum1.setInsertTime(new Date());
//                if (appUserId.compareTo(appUserId1) != 0) {
//                    courseCounsum1.setReason("赠课");
//                } else {
                    courseCounsum1.setReason("换课");
//                }
                courseCounsum1.setNum(laveClassHours);
                courseCounsum1.setChangeType(1);
                courseCounsum1.setPaymentId(studentPay.getId());
                counsumService.save(courseCounsum1);
                schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours);
                //删除原排课数据
                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                        .eq("type", 1).eq("appUserId", appUserId)
                        .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
                        .orderByAsc("classDate"));
                int num = totalClassHours - laveClassHours;
                for (int i = num; i < coursePackageSchedulings.size(); i++) {
                    CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i);
                    coursePackageSchedulingService.deleteById(packageScheduling.getId());
                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
                }
            } else {
                one.setTotalClassHours(one.getTotalClassHours() + laveClassHours);
                one.setLaveClassHours(one.getLaveClassHours() + laveClassHours);
                one.setAppUserId(null);
                paymentService.updateById(one);
                holi = one;
            }
            System.out.println("保存成功=============》=" + holi);
                Integer totalClassHours = orinPay.getTotalClassHours();
                Integer laveClassHours = orinPay.getLaveClassHours();
                Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
                CoursePackageOrderStudent to = new CoursePackageOrderStudent();
                to.setStudentId(Integer.valueOf(stuId));
                to.setTotalClassHours(laveClassHours);
                to.setLaveClassHours(laveClassHours);
                to.setCoursePackageId(toHoliDto.getClassId());
                to.setState(1);
                to.setAppUserId(student.getAppUserId());
                to.setStatus(1);
                to.setInsertTime(new Date());
            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();
            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", 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;
                Integer validDays = coursePackage.getValidDays();
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                to.setUseTime(calendar.getTime());
                orderStudentService.save(to);
                if (null == student.getValidity()) {
                    student.setValidity(calendar.getTime());
                } else if (student.getValidity().getTime() < calendar.getTime().getTime()) {
                    student.setValidity(calendar.getTime());
                }
                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(holi.getId());
                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                        student1.setSignInOrNot(1);
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        cpsMapper.insert(student1);
                        count++;
                    }
                studentClient.frozen(student);
                Integer laveClassHours1 = orinPay.getLaveClassHours();
                Integer appUserId = orinPay.getAppUserId();
                orinPay.setLaveClassHours(0);
                orinPay.setAppUserId(null);
                orinPay.setStatus(3);
                orderStudentService.updateById(orinPay);
                CourseCounsum courseCounsum = new CourseCounsum();
                courseCounsum.setInsertTime(new Date());
                courseCounsum.setReason("换课");
                courseCounsum.setNum(laveClassHours1);
                courseCounsum.setChangeType(0);
                courseCounsum.setPaymentId(orinPay.getId());
                counsumService.save(courseCounsum);
                CourseCounsum courseCounsum1 = new CourseCounsum();
                courseCounsum1.setInsertTime(new Date());
                courseCounsum1.setReason("换课");
                courseCounsum1.setNum(laveClassHours1);
                courseCounsum1.setChangeType(1);
                courseCounsum1.setPaymentId(to.getId());
                counsumService.save(courseCounsum1);
                //开始排课
                addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to);
                //删除原排课数据
                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                        .eq("type", 1).eq("appUserId", appUserId)
                        .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId())
                        .orderByAsc("classDate"));
                int num = totalClassHours - laveClassHours;
                for (int i = num; i < coursePackageSchedulings.size(); i++) {
                    CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i);
                    coursePackageSchedulingService.deleteById(packageScheduling.getId());
                    coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId()));
                }
            }
        }
        String[] stringArray = strings.toArray(new String[strings.size()]);
    return "换课成功";
        String join = StringUtils.join(stringArray, ",");
        System.out.println("==========join========" + join);
        return "转课成功";
    }
}