wangliang преди 1 година
родител
ревизия
d3b8af85df

+ 1 - 3
themis-admin/src/main/java/com/qmth/themis/admin/api/TEExamController.java

@@ -227,9 +227,7 @@ public class TEExamController {
             List<TEExamActivity> teExamActivityList = teExamActivityService.list(new QueryWrapper<TEExamActivity>().lambda().eq(TEExamActivity::getExamId, teExam.getId()).eq(TEExamActivity::getEnable, 1));
             for (TEExamActivity t : teExamActivityList) {
                 themisCacheService.updateTodayExamCache(t.getExamId().toString(), t.getId().toString());
-                if (t.getEnable().intValue() == 1 && t.getFinishTime().longValue() > System.currentTimeMillis()) {
-                    themisCacheService.updateOrgExamListCache(teExam.getOrgId().toString(), t.getExamId().toString(), t.getId());
-                }
+                themisCacheService.updateOrgExamListCache(teExam.getOrgId().toString(), t.getExamId().toString(), t.getId());
             }
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);

+ 0 - 51
themis-business/src/main/java/com/qmth/themis/business/bean/admin/ExamListBean.java

@@ -1,51 +0,0 @@
-package com.qmth.themis.business.bean.admin;
-
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-import java.util.Set;
-
-/**
- * @Description: 考试列表集合
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2023/10/27
- */
-public class ExamListBean implements Serializable {
-
-    @ApiModelProperty(name = "考试批次id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long examId;
-
-    @ApiModelProperty(name = "考场场次集合")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Set<Long> examActivityIdSet;
-
-    public ExamListBean() {
-
-    }
-
-    public ExamListBean(Long examId, Set<Long> examActivityIdSet) {
-        this.examId = examId;
-        this.examActivityIdSet = examActivityIdSet;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public Set<Long> getExamActivityIdSet() {
-        return examActivityIdSet;
-    }
-
-    public void setExamActivityIdSet(Set<Long> examActivityIdSet) {
-        this.examActivityIdSet = examActivityIdSet;
-    }
-}

+ 22 - 0
themis-business/src/main/java/com/qmth/themis/business/dto/response/TEExamActivityWaitDto.java

@@ -65,6 +65,12 @@ public class TEExamActivityWaitDto implements Serializable {
     @ApiModelProperty(name = "考试id")
     private Long examId;//考试id
 
+    @ApiModelProperty(name = "考试场次结束时间")
+    private Long finishTime;
+
+    @ApiModelProperty(name = "是否启用")
+    private Integer enable;
+
     public TEExamActivityWaitDto() {
 
     }
@@ -103,6 +109,22 @@ public class TEExamActivityWaitDto implements Serializable {
         this.leftExamCount = (ec.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue()) < 0 ? 0 : ec.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue();
     }
 
+    public Integer getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Integer enable) {
+        this.enable = enable;
+    }
+
+    public Long getFinishTime() {
+        return finishTime;
+    }
+
+    public void setFinishTime(Long finishTime) {
+        this.finishTime = finishTime;
+    }
+
     public Long getExamActivityId() {
         return examActivityId;
     }

+ 1 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamActivityServiceImpl.java

@@ -414,9 +414,7 @@ public class TEExamActivityServiceImpl extends ServiceImpl<TEExamActivityMapper,
 
             for (TEExamActivity ac : teExamActivityList) {
                 themisCacheService.updateTodayExamCache(ac.getExamId().toString(), ac.getId().toString());
-                if (ac.getEnable().intValue() == 1 && ac.getFinishTime().longValue() > System.currentTimeMillis()) {
-                    themisCacheService.updateOrgExamListCache(teExam.getOrgId().toString(), ac.getExamId().toString(), ac.getId());
-                }
+                themisCacheService.updateOrgExamListCache(teExam.getOrgId().toString(), ac.getExamId().toString(), ac.getId());
                 teExamActivityService.updateExamActivityCacheBean(ac.getId());
             }
 

+ 11 - 7
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -187,13 +187,17 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             teExamActivityWaitList.forEach(i -> {
                 ExamCacheBean examCache = getExamCacheBeanNative(i.getExamId());
                 TEExamWaitDto teExamWaitDto = new TEExamWaitDto(i.getExamId(), i.getExamActivityId(), examCache.getName(), examCache.getCode());
-                setMap.put(i.getExamId(), teExamWaitDto);
-                Set<TEExamActivityWaitDto> teExamActivityWaitDtos = Objects.nonNull(map.get(i.getExamId())) ? map.get(i.getExamId()) : new LinkedHashSet<>();
-                teExamActivityWaitDtos.add(i);
-                map.put(i.getExamId(), teExamActivityWaitDtos);
-                ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(i.getExamStudentId());
-                Integer leftExamCount = examCache.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue() < 0 ? 0 : examCache.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue();
-                i.setLeftExamCount(leftExamCount);
+                if (Objects.nonNull(examCache.getEnable()) && Objects.nonNull(i.getEnable())
+                        && examCache.getEnable().intValue() == 1 && i.getEnable().intValue() == 1
+                        && i.getFinishTime().longValue() < System.currentTimeMillis()) {
+                    setMap.put(i.getExamId(), teExamWaitDto);
+                    Set<TEExamActivityWaitDto> teExamActivityWaitDtos = Objects.nonNull(map.get(i.getExamId())) ? map.get(i.getExamId()) : new LinkedHashSet<>();
+                    teExamActivityWaitDtos.add(i);
+                    map.put(i.getExamId(), teExamActivityWaitDtos);
+                    ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(i.getExamStudentId());
+                    Integer leftExamCount = examCache.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue() < 0 ? 0 : examCache.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue();
+                    i.setLeftExamCount(leftExamCount);
+                }
             });
             setMap.forEach((k, v) -> {
                 v.setActivities(new ArrayList<>(map.get(k)));

+ 1 - 8
themis-business/src/main/java/com/qmth/themis/business/service/impl/ThemisCacheServiceImpl.java

@@ -2,7 +2,6 @@ package com.qmth.themis.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.themis.business.bean.admin.ExamActivityTodayBean;
-import com.qmth.themis.business.bean.admin.ExamListBean;
 import com.qmth.themis.business.cache.bean.ExamCacheBean;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
@@ -654,7 +653,6 @@ public class ThemisCacheServiceImpl implements ThemisCacheService {
         //查询考试场次结束时间大于当前时间的所有考试
         List<TEExamActivity> teExamActivityList = teExamActivityService.list(new QueryWrapper<TEExamActivity>().lambda().gt(TEExamActivity::getFinishTime, System.currentTimeMillis()).eq(TEExamActivity::getEnable, 1));
         if (!CollectionUtils.isEmpty(teExamActivityList)) {
-            LinkedMultiValueMap<Long, ExamListBean> examActivityMap = new LinkedMultiValueMap<>();
             Map<Long, Set<Long>> examMap = new HashMap<>();
             Map<Long, Set<Long>> orgMap = new HashMap<>();
             for (TEExamActivity t : teExamActivityList) {
@@ -678,12 +676,7 @@ public class ThemisCacheServiceImpl implements ThemisCacheService {
             }
             orgMap.forEach((k, v) -> {
                 for (Long l : v) {
-                    examActivityMap.add(k, new ExamListBean(l, examMap.get(l)));
-                }
-            });
-            examActivityMap.forEach((k, v) -> {
-                for (ExamListBean e : v) {
-                    redisUtil.set(SystemConstant.ORG_EXAM_LIST_MAP_CACHE + k, e.getExamId().toString(), e.getExamActivityIdSet());
+                    redisUtil.set(SystemConstant.ORG_EXAM_LIST_MAP_CACHE + k, l.toString(), examMap.get(l));
                 }
             });
         }

+ 3 - 3
themis-business/src/main/resources/mapper/TEExamActivityMapper.xml

@@ -130,7 +130,9 @@
         ,tees.id as examStudentId,
         tees.course_code as courseCode,
         tees.course_name as courseName,
-        teea.id as examActivityId
+        teea.id as examActivityId,
+        teea.finish_time as finishTime,
+        teea.enable
         from t_e_exam_student tees
         left join t_e_exam tee on tee.id = tees.exam_id
         left join t_e_exam_activity teea on teea.id = tees.exam_activity_id
@@ -146,8 +148,6 @@
             </if>
             <if test="orgId != null and orgId != ''">
                 and tee.org_id = #{orgId}
-                and tee.enable = 1
-                and teea.enable = 1
             </if>
             and tees.enable = 1
         </where>