【修改】 考点服务器绑定专业sql增加查询条件

This commit is contained in:
dlaren
2025-08-11 17:17:49 +08:00
parent c07e8910d2
commit 28c75d52c5
2 changed files with 390 additions and 396 deletions

View File

@@ -72,7 +72,7 @@ public class MonitorServiceImpl implements MonitorService {
private ExamSpecialtyMapper examSpecialtyMapper;
// @Resource
// @Resource
// private FileService fileService;
@Override
public String createMonitor(MonitorSaveReqVO createReqVO) {
@@ -115,11 +115,12 @@ public class MonitorServiceImpl implements MonitorService {
public PageResult<MonitorDO> getMonitorPage(MonitorPageReqVO pageReqVO) {
return monitorMapper.selectPage(pageReqVO);
}
@Override
public long getStuMonitor(StuMonitorPaperVo stuMonitorPaperVo) throws RuntimeException {
String key = "userCache:"+stuMonitorPaperVo.getTaskId()+":" + stuMonitorPaperVo.getStuId();
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key),MonitorDO.class);
if (info==null){
String key = "userCache:" + stuMonitorPaperVo.getTaskId() + ":" + stuMonitorPaperVo.getStuId();
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key), MonitorDO.class);
if (info == null) {
return 0L;
}
//获取属性 判断 专业/课程点位
@@ -171,11 +172,10 @@ public class MonitorServiceImpl implements MonitorService {
}
// 只有授权了“专业”,才去查 taskInVo 并校验
if (!authSpecialtyIds.isEmpty()) {
//查询 该试卷任务 设计的 专业
List<SpecialtyVo> taskInVo = educationPaperTaskMapper.selectTaskCounts(stuMonitorPaperVo.getTaskId(),loginTenantId);
List<SpecialtyVo> taskInVo = educationPaperTaskMapper.selectTaskCounts(stuMonitorPaperVo.getTaskId(), loginTenantId);
for (SpecialtyVo specialtyVo : taskInVo) {
String specialtyId = specialtyVo.getSpecialtyId();
@@ -226,7 +226,7 @@ public class MonitorServiceImpl implements MonitorService {
}
}
if (StringUtils.isNotBlank(stuMonitorPaperVo.getPaperId())){
if (StringUtils.isNotBlank(stuMonitorPaperVo.getPaperId())) {
EducationPaper educationPaper = educationPaperMapper.selectEducationPaperByPaperId(stuMonitorPaperVo.getPaperId());
String counts = educationPaper.getCounts();
@@ -247,18 +247,18 @@ public class MonitorServiceImpl implements MonitorService {
info.setIp(stuMonitorPaperVo.getIp());
if (info.getRemainingTime()==null){
stringRedisTemplate.opsForValue().set("userCache:"+stuMonitorPaperVo.getTaskId()+":"+stuMonitorPaperVo.getStuId(), JsonUtils.toJsonString(info));
if (info.getRemainingTime() == null) {
stringRedisTemplate.opsForValue().set("userCache:" + stuMonitorPaperVo.getTaskId() + ":" + stuMonitorPaperVo.getStuId(), JsonUtils.toJsonString(info));
monitorMapper.updateById(info);
return 24 * 60 * 60L; // 1天
}else {
} else {
EducationPaperParam educationPaperParam = educationPaperParamMapper.selectEducationPaperParamByTaskId(stuMonitorPaperVo.getTaskId());
//测评时长
Time examTime = educationPaperParam.getExamTime();
//判断是否开启测评时长限制
//开启测评时长限制 开启场次 判断场次时间 ,,,,没开启测评时长限制 开启场次 -判断场次时间
if ("0".equals(educationPaperParam.getIsSession())){
if ("0".equals(educationPaperParam.getIsSession())) {
//获得场次开始时间, 结束时间 判断是否在 时间范围内
EducationPaperPerson educationPaperPerson = educationPaperPersonMapper.selectByTaskIdAndPersonId(stuMonitorPaperVo.getTaskId(), stuMonitorPaperVo.getStuId());
@@ -293,7 +293,7 @@ public class MonitorServiceImpl implements MonitorService {
boolean isWithinEntryTime = !now.isBefore(entryStart) && !now.isAfter(entryEnd);
System.out.println("是否在允许入场时间段内:" + isWithinEntryTime);
if (isWithinEntryTime){
if (isWithinEntryTime) {
// 1. 计算剩余时间(秒)
long remainingSeconds = ChronoUnit.SECONDS.between(LocalDateTime.now(), DateUtil.toLocalDateTime(endTime));
remainingSeconds = Math.max(remainingSeconds, 0); // 防止负数
@@ -310,17 +310,17 @@ public class MonitorServiceImpl implements MonitorService {
// 判分后更新记录
monitorMapper.updateById(info);
return finalRemaining;
}else {
} else {
return 0;
}
}
//开启测评时长限制 没开启场次 -直接返回测评时长
if ("1".equals(educationPaperParam.getIsSession())&&"0".equals(educationPaperParam.getIsTime())){
if ("1".equals(educationPaperParam.getIsSession()) && "0".equals(educationPaperParam.getIsTime())) {
info.setRemainingTime((long) examTime.toLocalTime().toSecondOfDay());
stringRedisTemplate.opsForValue().set("userCache:"+stuMonitorPaperVo.getTaskId()+":"+stuMonitorPaperVo.getStuId(), JsonUtils.toJsonString(info));
stringRedisTemplate.opsForValue().set("userCache:" + stuMonitorPaperVo.getTaskId() + ":" + stuMonitorPaperVo.getStuId(), JsonUtils.toJsonString(info));
monitorMapper.updateById(info);
return (long) examTime.toLocalTime().toSecondOfDay();
@@ -334,14 +334,13 @@ public class MonitorServiceImpl implements MonitorService {
@Override
public Boolean updateStuMonitor(StuMonitorQuVo stuMonitorQuVo) {
String key = "userCache:"+stuMonitorQuVo.getTaskId()+":" + stuMonitorQuVo.getStuId();
String keychoice = "keychoice:"+stuMonitorQuVo.getTaskId()+":" + stuMonitorQuVo.getStuId();
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key),MonitorDO.class);
String key = "userCache:" + stuMonitorQuVo.getTaskId() + ":" + stuMonitorQuVo.getStuId();
String keychoice = "keychoice:" + stuMonitorQuVo.getTaskId() + ":" + stuMonitorQuVo.getStuId();
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key), MonitorDO.class);
if (info != null) {
if (!("1".equals(info.getExamStatus()))){
if (!("1".equals(info.getExamStatus()))) {
return false;
}
stringRedisTemplate.opsForValue().set(keychoice, JsonUtils.toJsonString(stuMonitorQuVo));
@@ -358,14 +357,14 @@ public class MonitorServiceImpl implements MonitorService {
EducationPaper educationPaper = educationPaperMapper.selectEducationPaperByPaperId(stuMonitorPaperEndVo.getPaperId());
String taskId = educationPaper.getTaskId();
String key = "userCache:" + taskId + ":" + stuMonitorPaperEndVo.getStuId();
double score =educationPaperMapper.selctStuScoreByStuIdAndPaperId(stuMonitorPaperEndVo.getStuId(),stuMonitorPaperEndVo.getPaperId());
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key),MonitorDO.class);
double score = educationPaperMapper.selctStuScoreByStuIdAndPaperId(stuMonitorPaperEndVo.getStuId(), stuMonitorPaperEndVo.getPaperId());
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key), MonitorDO.class);
info.setRemainingTime(0L);
EducationPaperParam educationPaperParam = educationPaperParamMapper.selectEducationPaperParamByTaskId(taskId);
EducationPaperTask educationPaperTask = educationPaperTaskMapper.selectEducationPaperTaskByTaskId(taskId);
if ("1".equals(educationPaperParam.getSaveGrades())){
if ("1".equals(educationPaperParam.getSaveGrades())) {
info.setScore(String.valueOf(score));
}else {
} else {
MonitorDO monitorDO = monitorMapper.selectById(info.getMonitorId());
info.setScore(String.valueOf(score));
if (StringUtils.isNotBlank(monitorDO.getScore())) {
@@ -386,14 +385,13 @@ public class MonitorServiceImpl implements MonitorService {
}
}
//考试下的任务 结束改为 结束 其他为待考
if ("1".equals(educationPaperTask.getTaskType())){
if ("1".equals(educationPaperTask.getTaskType())) {
info.setExamStatus("2");
redisTemplate.delete(key);
}else {
} else {
info.setExamStatus("0");
stringRedisTemplate.opsForValue().set(key, JsonUtils.toJsonString(info));
}
@@ -411,27 +409,27 @@ public class MonitorServiceImpl implements MonitorService {
public Boolean updateMonitorStatus(StuMonitorStatusVo stuMonitorStatusVo) {
String status = stuMonitorStatusVo.getStatus();
List<String> monitorIds = stuMonitorStatusVo.getMonitorIds();
if ("1".equals(status)||"0".equals(status)){
if ("1".equals(status) || "0".equals(status)) {
//新增或更新
for (String monitorId : monitorIds) {
MonitorDO monitorDO = monitorMapper.selectById(monitorId);
String taskId = monitorDO.getTaskId();
String stuId = monitorDO.getStuId();
String key = "userCache:" + taskId+":" +stuId;
String key = "userCache:" + taskId + ":" + stuId;
monitorDO.setExamStatus(status);
monitorMapper.updateById(monitorDO);
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key),MonitorDO.class);
MonitorDO info = JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(key), MonitorDO.class);
EducationPaperParam educationPaperParam = educationPaperParamMapper.selectEducationPaperParamByTaskId(taskId);
Time examTime = educationPaperParam.getExamTime();
if (info==null){
if (info == null) {
MonitorDO monitorDO1 = monitorMapper.selectOne(
new QueryWrapper<MonitorDO>()
.eq("stu_id", stuId)
.eq("task_id", taskId)
);
PersonRepDto personRepDto = educationPaperPersonMapper.selectUserById(stuId);
String name= educationPaperTaskMapper.selectEducationPaperTaskNameByid(taskId);
String name = educationPaperTaskMapper.selectEducationPaperTaskNameByid(taskId);
EducationPaperTask educationPaperTask = educationPaperTaskMapper.selectEducationPaperTaskByTaskId(taskId);
monitorDO1.setScore("0");
monitorDO1.setTaskId(taskId);
@@ -444,14 +442,14 @@ public class MonitorServiceImpl implements MonitorService {
monitorDO1.setNickname(personRepDto.getNickname());
//如果开启了 时长限制 或者考场
if ("0".equals(educationPaperParam.getIsTime())||"0".equals(educationPaperParam.getIsSession())){
if ("0".equals(educationPaperParam.getIsTime()) || "0".equals(educationPaperParam.getIsSession())) {
monitorDO1.setRemainingTime((long) examTime.toLocalTime().toSecondOfDay());
}
stringRedisTemplate.opsForValue().set(key, JsonUtils.toJsonString(monitorDO1));
monitorMapper.updateById(monitorDO1);
}else {
} else {
//如果开启了 时长限制 或者考场
if ("0".equals(educationPaperParam.getIsTime())||"0".equals(educationPaperParam.getIsSession())){
if ("0".equals(educationPaperParam.getIsTime()) || "0".equals(educationPaperParam.getIsSession())) {
info.setRemainingTime((long) examTime.toLocalTime().toSecondOfDay());
}
info.setScore("0");
@@ -462,25 +460,23 @@ public class MonitorServiceImpl implements MonitorService {
}
}
}
if ("2".equals(status)){
if ("2".equals(status)) {
//删除
for (String monitorId : monitorIds) {
MonitorDO monitorDO = monitorMapper.selectById(monitorId);
String taskId = monitorDO.getTaskId();
String stuId = monitorDO.getStuId();
String key = "userCache:" + taskId+":" +stuId;
String key = "userCache:" + taskId + ":" + stuId;
monitorDO.setRemainingTime(0L);
if ("0".equals(monitorDO.getTaskType())){
if ("0".equals(monitorDO.getTaskType())) {
monitorDO.setExamStatus("0");
stringRedisTemplate.opsForValue().set(key, JsonUtils.toJsonString(monitorDO));
}else {
} else {
monitorDO.setExamStatus(status);
redisTemplate.delete(key);
}
@@ -488,13 +484,13 @@ public class MonitorServiceImpl implements MonitorService {
monitorMapper.updateById(monitorDO);
}
}
return true;
}
public List<TentSpecialy> filterSpecialtyList(List<TentSpecialy> inputList) {
if (inputList == null || inputList.isEmpty()) {
return Collections.emptyList();
@@ -527,6 +523,4 @@ public class MonitorServiceImpl implements MonitorService {
}
}

View File

@@ -126,7 +126,7 @@
<select id="selectExamSpecialtyBySpNameOne" parameterType="String" resultType="ExamSpecialty">
SELECT *
from exam_specialty
where sp_name = #{name}
where sp_name = #{name} and deleted = 0 and status = 0
</select>
<select id="selectExamSpecialtyBySpName" parameterType="String"