puzhibing
2023-11-25 53e7558400dcacecdce70e39ebfe1727740f9296
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
package com.dsh.course.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.controller.CoursePackagePaymentController;
import com.dsh.course.entity.CoursePackageScheduling;
import com.dsh.course.entity.CoursePackageStudent;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.mapper.CoursePackageSchedulingMapper;
import com.dsh.course.model.QueryCoursePackageSchedulingList;
import com.dsh.course.model.vo.response.AppUserVideoResponse;
import com.dsh.course.service.CoursePackageStudentService;
import com.dsh.course.service.ICoursePackageSchedulingService;
import com.dsh.course.service.TCoursePackagePaymentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
 
/**
 * @author zhibing.pu
 * @Date 2023/8/11 10:58
 */
@Service
public class CoursePackageSchedulingServiceImpl extends ServiceImpl<CoursePackageSchedulingMapper, CoursePackageScheduling> implements ICoursePackageSchedulingService {
 
    @Autowired
    private CoursePackageStudentService coursePackageStudentService;
 
    @Autowired
    private TCoursePackageServiceImpl coursePackageService;
 
    @Resource
    private CoursePackageSchedulingMapper coursePackageSchedulingMapper;
 
 
    /**
     * 获取课包排课数据
     *
     * @param page
     * @param queryCoursePackageSchedulingList
     * @return
     */
    @Override
    public List<Map<String, Object>> queryCoursePackageSchedulingList(Page<Map<String, Object>> page, QueryCoursePackageSchedulingList queryCoursePackageSchedulingList) {
        List<Map<String, Object>> list = this.baseMapper.queryCoursePackageSchedulingList(page, queryCoursePackageSchedulingList);
        for (Map<String, Object> map : list) {
            Long id = Long.valueOf(map.get("id").toString());
            int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", id).eq("reservationStatus", 1));
//            map.put("registered", count);
            int count1 = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", id).eq("reservationStatus", 1));
            int count2 = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", id).eq("reservationStatus", 0));
 
 
            map.put("registered", count2);
            map.put("actualArrival", count1);
            map.put("nonArrival", count - count1);
//            Integer totalClassHours = (Integer) map.get("totalClassHours");
//            Integer laveClassHours = (Integer) map.get("laveClassHours");
//            map.put("already",totalClassHours-laveClassHours);
 
 
        }
        return list;
    }
 
 
    /**
     * 定时添加排课数据
     */
    @Override
    public void taskAddData() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    List<TCoursePackage> list = coursePackageService.list(new QueryWrapper<TCoursePackage>().eq("status", 2).eq("auditStatus", 2).eq("state", 1));
                    for (TCoursePackage tCoursePackage : list) {
                        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", tCoursePackage.getId()).last(" order by classDate desc limit 0, 1"));
                        Calendar calendar = Calendar.getInstance();
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        if (null != coursePackageScheduling) {
                            calendar.setTime(sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00"));
                            calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                        } else {
                            calendar.setTime(sdf1.parse(sdf.format(new Date()) + " 00:00:00"));
                        }
                        coursePackageScheduling = new CoursePackageScheduling();
                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                        coursePackageScheduling.setClassDate(calendar.getTime());
                        coursePackageScheduling.setStatus(1);
                        coursePackageSchedulingMapper.insert(coursePackageScheduling);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
 
 
    @Autowired
    private TCoursePackagePaymentService packagePaymentService;
 
    /**
     * 定时修改状态
     */
    @Override
    public void cancel() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                List<TCoursePackagePayment> list = packagePaymentService.list();
                Date now = new Date();
                List<Long> pays = new ArrayList<>();
                for (TCoursePackagePayment coursePackagePayment : list) {
                    if (now.before(coursePackagePayment.getUseTime())) {
                        pays.add(coursePackagePayment.getId());
                    }
                }
 
                List<CoursePackageStudent> coursePackagePaymentId = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().in("coursePackagePaymentId", pays));
                List<Long> scs = new ArrayList<>();
                for (CoursePackageStudent coursePackageStudent : coursePackagePaymentId) {
                    scs.add(coursePackageStudent.getCoursePackageSchedulingId());
                }
                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().in("coursePackagePaymentId", pays));
                coursePackageSchedulingMapper.delete(new QueryWrapper<CoursePackageScheduling>().in("id", scs));
 
 
            }
        }).start();
    }
 
    /**
     * 定时修改状态
     */
    @Override
    public void taskSetStatus() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //开始数据
                List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingMapper.selectList(new QueryWrapper<CoursePackageScheduling>().eq("status", 1).last(" and now() >= classDate and now() < endDate"));
                for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
                    coursePackageScheduling.setStatus(2);
                    coursePackageScheduling.setCoursePackageId(null);
                    coursePackageSchedulingMapper.updateById(coursePackageScheduling);
 
                    TCoursePackage coursePackage = coursePackageService.getById(coursePackageScheduling.getCoursePackageId());
                    if (coursePackage.getStatus() == 1) {
                        coursePackage.setStatus(2);
                        coursePackageService.updateById(coursePackage);
                    }
                }
 
                //结束数据
                coursePackageSchedulings = coursePackageSchedulingMapper.selectList(new QueryWrapper<CoursePackageScheduling>().eq("status", 2).last(" and now() >= endDate"));
                for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
                    coursePackageScheduling.setStatus(3);
                    coursePackageScheduling.setCoursePackageId(null);
                    coursePackageSchedulingMapper.updateById(coursePackageScheduling);
                }
            }
        }).start();
    }
 
    @Override
    public List<AppUserVideoResponse> queryAll(List<Long> longs) {
 
        if (longs.size() > 0) {
            List<AppUserVideoResponse> appUserVideoResponses = this.baseMapper.queryAll(longs);
 
            for (AppUserVideoResponse appUserVideoRespon : appUserVideoResponses) {
                if (appUserVideoRespon.getVideoId() != null) {
                    if (this.baseMapper.isHave(appUserVideoRespon.getVideoId()) > 0) {
                        appUserVideoRespon.setStudyStatus(2);
                    } else {
                        appUserVideoRespon.setStudyStatus(1);
                    }
                }
            }
 
            return appUserVideoResponses;
 
        } else return null;
 
    }
}