|
@@ -1,27 +1,8 @@
|
1
|
1
|
package com.xhkjedu.sclass.service.classroom;
|
2
|
2
|
|
3
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomActivestudentMapper;
|
4
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomAskstudentMapper;
|
5
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomAskteacherMapper;
|
6
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomFileMapper;
|
7
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomMapper;
|
8
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomPaperFileMapper;
|
9
|
|
-import com.xhkjedu.sclass.mapper.classroom.ClassroomSignMapper;
|
10
|
|
-import com.xhkjedu.sclass.model.classroom.TClassroom;
|
11
|
|
-import com.xhkjedu.sclass.model.classroom.TClassroomAskstudent;
|
12
|
|
-import com.xhkjedu.sclass.model.classroom.TClassroomAskteacher;
|
13
|
|
-import com.xhkjedu.sclass.model.classroom.TClassroomFile;
|
14
|
|
-import com.xhkjedu.sclass.model.classroom.TClassroomPaperFile;
|
15
|
|
-import com.xhkjedu.sclass.model.classroom.TClassroomSign;
|
16
|
|
-import com.xhkjedu.sclass.vo.classroom.ObjectiveVo;
|
17
|
|
-import com.xhkjedu.sclass.vo.classroom.ReportEQuestionVo;
|
18
|
|
-import com.xhkjedu.sclass.vo.classroom.ReportExamVo;
|
19
|
|
-import com.xhkjedu.sclass.vo.classroom.ReportRoomVo;
|
20
|
|
-import com.xhkjedu.sclass.vo.classroom.RoomCorrectCallVo;
|
21
|
|
-import com.xhkjedu.sclass.vo.classroom.RoomCorrectExamVo;
|
22
|
|
-import com.xhkjedu.sclass.vo.classroom.RoomCorrectVo;
|
23
|
|
-import com.xhkjedu.sclass.vo.classroom.RoomVo;
|
24
|
|
-import com.xhkjedu.sclass.vo.classroom.SubjectiveVo;
|
|
3
|
+import com.xhkjedu.sclass.mapper.classroom.*;
|
|
4
|
+import com.xhkjedu.sclass.model.classroom.*;
|
|
5
|
+import com.xhkjedu.sclass.vo.classroom.*;
|
25
|
6
|
import com.xhkjedu.sclass.vo.paper.CheckClassVo;
|
26
|
7
|
import com.xhkjedu.utils.N_Utils;
|
27
|
8
|
import com.xhkjedu.vo.ResultVo;
|
|
@@ -32,8 +13,10 @@ import org.springframework.transaction.annotation.Transactional;
|
32
|
13
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
33
|
14
|
|
34
|
15
|
import javax.annotation.Resource;
|
|
16
|
+import java.util.HashMap;
|
35
|
17
|
import java.util.List;
|
36
|
18
|
import java.util.Map;
|
|
19
|
+import java.util.stream.Collectors;
|
37
|
20
|
|
38
|
21
|
@Slf4j
|
39
|
22
|
@Service
|
|
@@ -69,11 +52,11 @@ public class ClassroomService {
|
69
|
52
|
Integer num = classroomMapper.getStudentNumById(room.getClassid());//根据班级id获取学生数量
|
70
|
53
|
room.setClassnum(num);
|
71
|
54
|
classroomMapper.save(room);
|
72
|
|
- classroomActivestudentMapper.saveStuActive(room.getRoomid(), room.getClassid(), room.getSchoolid());
|
|
55
|
+ //classroomActivestudentMapper.saveStuActive(room.getRoomid(), room.getClassid(), room.getSchoolid());
|
73
|
56
|
} catch (Exception e) {
|
74
|
57
|
if (e instanceof DuplicateKeyException) {
|
75
|
58
|
rtn = true;
|
76
|
|
- log.error("接口重复请求,课堂id:" + room.getRoomid() + ",课堂名称:" + room.getRoomname());
|
|
59
|
+ log.error("课堂数据已保存,课堂id:" + room.getRoomid() + ",课堂名称:" + room.getRoomname());
|
77
|
60
|
} else {
|
78
|
61
|
log.error("开始课堂失败:" + e.getMessage());
|
79
|
62
|
}
|
|
@@ -99,7 +82,7 @@ public class ClassroomService {
|
99
|
82
|
room.setEndtime(tClassroom.getCreatetime() + 60 * 45);
|
100
|
83
|
}
|
101
|
84
|
classroomMapper.endClass(room);//结束课堂
|
102
|
|
- classroomActivestudentMapper.updateActiveRank(roomid);//更新活跃值排名
|
|
85
|
+ //classroomActivestudentMapper.updateActiveRank(roomid);//更新活跃值排名
|
103
|
86
|
} catch (Exception e) {
|
104
|
87
|
log.error("结束课堂失败:" + e.getMessage());
|
105
|
88
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
@@ -124,7 +107,7 @@ public class ClassroomService {
|
124
|
107
|
classroomSignMapper.save(sign);
|
125
|
108
|
//如果一个学生退出课堂再进来数据就不对了,最后计算
|
126
|
109
|
//classroomMapper.updateRealStuNum(sign.getRoomid());//更新班级实际签到学生数量
|
127
|
|
- classroomActivestudentMapper.updateActiveNum(roomid, userid);//更新学生活跃值
|
|
110
|
+ //classroomActivestudentMapper.updateActiveNum(roomid, userid);//更新学生活跃值
|
128
|
111
|
}
|
129
|
112
|
} catch (Exception e) {
|
130
|
113
|
log.error("保存学生签到信息失败:" + e.getMessage());
|
|
@@ -191,7 +174,7 @@ public class ClassroomService {
|
191
|
174
|
}
|
192
|
175
|
classroomAskstudentMapper.save(student);
|
193
|
176
|
//保存成功更新学生活跃值
|
194
|
|
- classroomActivestudentMapper.updateActiveNum(student.getRoomid(), student.getStudentid());
|
|
177
|
+ //classroomActivestudentMapper.updateActiveNum(student.getRoomid(), student.getStudentid());
|
195
|
178
|
} catch (Exception e) {
|
196
|
179
|
log.error("保存学生作答情况失败:" + e.getMessage());
|
197
|
180
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
@@ -459,4 +442,35 @@ public class ClassroomService {
|
459
|
442
|
public List<Map> listStudent(Integer classid, String lsbid) {
|
460
|
443
|
return classroomMapper.listStudent(classid, lsbid);
|
461
|
444
|
}
|
|
445
|
+
|
|
446
|
+ //更新学生活跃度 2022/10/17 课堂活跃度最后统一计算
|
|
447
|
+ public void saveStuActive(Long roomid, Integer classid, Integer schoolid) {
|
|
448
|
+ String asktids = classroomActivestudentMapper.getAsktidsByRoomId(roomid);
|
|
449
|
+ List<TClassroomActivestudent> students = classroomActivestudentMapper.listRoomStu(roomid, classid, asktids);
|
|
450
|
+ if(N_Utils.isListEmpty(students)) return;
|
|
451
|
+ Map<Integer, Integer> rank=new HashMap<>();
|
|
452
|
+ setRank(students,rank);//计算排名
|
|
453
|
+ int timestamp = N_Utils.getSecondTimestamp();
|
|
454
|
+ students.forEach(s -> {
|
|
455
|
+ s.setRoomid(roomid);
|
|
456
|
+ s.setSchoolid(schoolid);
|
|
457
|
+ s.setActiverank(rank.get(s.getActivenum()));
|
|
458
|
+ s.setCreatetime(timestamp);
|
|
459
|
+ });
|
|
460
|
+ classroomActivestudentMapper.insertList(students);
|
|
461
|
+ }
|
|
462
|
+
|
|
463
|
+ //计算排名
|
|
464
|
+ private void setRank(List<TClassroomActivestudent> students, Map<Integer, Integer> rank) {
|
|
465
|
+ List<Map.Entry<Integer, List<TClassroomActivestudent>>> gslist2 = students.stream()
|
|
466
|
+ .collect(Collectors.groupingBy(TClassroomActivestudent::getActivenum)).entrySet()
|
|
467
|
+ .stream().sorted((s1, s2) -> -Double.compare(s1.getKey(), s2.getKey())).collect(Collectors.toList());
|
|
468
|
+ Integer index = 1;
|
|
469
|
+ for (Map.Entry<Integer, List<TClassroomActivestudent>> entry : gslist2) {
|
|
470
|
+ for (TClassroomActivestudent cs : entry.getValue()) {
|
|
471
|
+ rank.put(cs.getActivenum(), index);
|
|
472
|
+ }
|
|
473
|
+ index = index + entry.getValue().size();
|
|
474
|
+ }
|
|
475
|
+ }
|
462
|
476
|
}
|