haogh 1 year ago
parent
commit
b37397d1e6

+ 0 - 1
src/main/java/com/qmth/exam/reserve/controller/admin/ExamRoomController.java

@@ -72,7 +72,6 @@ public class ExamRoomController extends BaseController {
 
     @ApiOperation(value = "考场导入")
     @PostMapping(value = "/import")
-    @Aac(strict = false, auth = false)
     public Map<String, Object> importExamRoom(@RequestParam MultipartFile file) {
         LoginUser user = this.curLoginUser();
         List<Map<String, Object>> failRecords;

+ 5 - 0
src/main/java/com/qmth/exam/reserve/service/impl/ExamRoomServiceImpl.java

@@ -64,14 +64,19 @@ public class ExamRoomServiceImpl extends ServiceImpl<ExamRoomDao, ExamRoomEntity
         checkExamRoom(req);
         ExamRoomEntity examRoomEntity = new ExamRoomEntity();
         BeanUtils.copyProperties(req, examRoomEntity);
+        ExamRoomEntity beforeUpdateRoom = new ExamRoomEntity();
         if (req.getId() == null) {
             examRoomEntity.setEnable(Boolean.TRUE);
             save(examRoomEntity);
         } else {
+            beforeUpdateRoom = getById(req.getId());
             updateById(examRoomEntity);
         }
         //更新考点容量和教学点容量
         updateExamSiteAndTeachingCapacity(req.getExamSiteId());
+        if(req.getId() != null && !req.getExamSiteId().equals(beforeUpdateRoom.getExamSiteId())) {
+            updateExamSiteAndTeachingCapacity(beforeUpdateRoom.getExamSiteId());
+        }
     }
 
     @Transactional

+ 7 - 0
src/main/java/com/qmth/exam/reserve/service/impl/ExamSiteServiceImpl.java

@@ -108,12 +108,19 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteDao, ExamSiteEntity
         ExamSiteEntity site = new ExamSiteEntity();
         BeanUtils.copyProperties(req, site);
         site.setCategoryId(req.getTeachingId());
+        ExamSiteEntity beforeUpdateSite = new ExamSiteEntity();
         if (req.getId() == null) {
             site.setCapacity(0);
             site.setEnable(Boolean.TRUE);
             save(site);
         } else {
+            beforeUpdateSite = getById(req.getId());
             updateById(site);
+            //更新教学点的容量
+            if(!req.getTeachingId().equals(beforeUpdateSite.getCategoryId())) {
+                categoryService.updateTeachingCapacity(req.getTeachingId());
+                categoryService.updateTeachingCapacity(beforeUpdateSite.getCategoryId());
+            }
             //清空考点缓存
             examSiteCacheService.clearExamSiteByIdCache(site.getId());
         }

+ 2 - 2
src/main/java/com/qmth/exam/reserve/service/impl/StudentApplyServiceImpl.java

@@ -761,7 +761,7 @@ public class StudentApplyServiceImpl extends ServiceImpl<StudentApplyDao, Studen
             }
             // 2.查询考试日期的待排考的考生
             List<StudentApplyEntity> toBeLayoutStudentList = this.baseMapper.listTimePeriod(
-                    noCancelTimePeroidList.stream().map(item -> item.getId()).collect(Collectors.toList()),
+                    noCancelTimePeroidList.stream().map(BaseEntity::getId).collect(Collectors.toList()),
                     Boolean.FALSE);
             if (toBeLayoutStudentList == null || toBeLayoutStudentList.isEmpty()) {
                 log.warn("没有待排考的考生");
@@ -783,7 +783,6 @@ public class StudentApplyServiceImpl extends ServiceImpl<StudentApplyDao, Studen
             }
         } catch (StatusException e) {
             log.error(e.getMessage());
-            e.printStackTrace();
         } finally {
             try {
                 // 解锁前检查当前线程是否持有该锁
@@ -855,6 +854,7 @@ public class StudentApplyServiceImpl extends ServiceImpl<StudentApplyDao, Studen
     public List<ExamRoomEntity> listExamRoom(Long examSiteId) {
         LambdaQueryWrapper<ExamRoomEntity> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(ExamRoomEntity::getExamSiteId, examSiteId);
+        wrapper.eq(ExamRoomEntity::getEnable, Boolean.TRUE);
         wrapper.orderByAsc(ExamRoomEntity::getCode);
         return examRoomService.list(wrapper);
     }

+ 4 - 0
src/main/java/com/qmth/exam/reserve/service/impl/StudentAutoAssignServiceImpl.java

@@ -64,6 +64,10 @@ public class StudentAutoAssignServiceImpl extends ServiceImpl<StudentApplyDao, S
             // 3、按照教学点安排考位。规则:不能和已预约的时间上有冲突
             for (Long key : noFinishApplyMap.keySet()) {
                 List<ExamSiteEntity> siteList = listExamSite(key);
+                if(siteList.isEmpty()) {
+                    log.warn("教学点{}下没有考点数据,不参与自动分配", key);
+                    continue;
+                }
                 List<StudentEntity> teachingStudentList = noFinishApplyMap.get(key);
                 for (ExamSiteEntity site : siteList) {
                     for (TimePeriodEntity time : timeList) {

+ 11 - 8
src/main/resources/mapper/StudentMapper.xml

@@ -32,14 +32,17 @@
     </select>
 
     <select id="listNoFinishCategory" resultType="com.qmth.exam.reserve.bean.stdapply.CategoryVO">
-        SELECT distinct s.category_id id
-        FROM t_student s
-                 LEFT JOIN (SELECT student_id, count(1) nums
-                            FROM t_student_apply a
-                            WHERE a.cancel = #{cancel}
-                            GROUP BY student_id) ts ON ts.student_id = s.id
-        WHERE apply_task_id = #{taskId}
-          AND s.apply_number - ifnull(ts.nums, 0) > 0
+        SELECT DISTINCT
+            s.category_id id
+        FROM
+            t_category g,
+            t_student s
+                LEFT JOIN ( SELECT student_id, count( 1 ) nums FROM t_student_apply a WHERE a.cancel = #{cancel} GROUP BY student_id ) ts ON ts.student_id = s.id
+        WHERE
+            apply_task_id =  #{taskId}
+          AND g.id = s.category_id
+          AND g.ENABLE = 1
+          AND s.apply_number - ifnull( ts.nums, 0 ) > 0
     </select>
 
 </mapper>