Pārlūkot izejas kodu

考场导入bug

xiatian 4 gadi atpakaļ
vecāks
revīzija
cf0b5f4486

+ 14 - 2
themis-business/src/main/java/com/qmth/themis/business/templete/service/impl/TempleteLogicServiceImpl.java

@@ -310,12 +310,24 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
             tbExamInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getOrgId, orgId)
                     .eq(TBExamInvigilateUser::getUserId, tbUser.getId())
                     .eq(TBExamInvigilateUser::getRoomCode, roomCode)
+                    .eq(TBExamInvigilateUser::getExamId, examId)
                     .eq(TBExamInvigilateUser::getRoomName, roomName);
             TBExamInvigilateUser tbExamInvigilateUser = tbExamInvigilateUserService.getOne(tbExamInvigilateUserQueryWrapper);
             if (Objects.isNull(tbExamInvigilateUser)) {//新增考场
-                tbExamInvigilateUser = new TBExamInvigilateUser(examId,orgId, tbUser.getId(), roomCode, roomName);
+            	 QueryWrapper<TBExamInvigilateUser> wrapper = new QueryWrapper<>();
+            	 wrapper.lambda().eq(TBExamInvigilateUser::getOrgId, orgId)
+                         .isNull(TBExamInvigilateUser::getUserId)
+                         .eq(TBExamInvigilateUser::getRoomCode, roomCode)
+                         .eq(TBExamInvigilateUser::getExamId, examId)
+                         .eq(TBExamInvigilateUser::getRoomName, roomName);
+                tbExamInvigilateUser = tbExamInvigilateUserService.getOne(wrapper);
+                if(tbExamInvigilateUser==null) {
+                	tbExamInvigilateUser = new TBExamInvigilateUser(examId,orgId, tbUser.getId(), roomCode, roomName);
+                }else {
+                	tbExamInvigilateUser.setUserId(tbUser.getId());
+                }
+                tbExamInvigilateUserService.saveOrUpdate(tbExamInvigilateUser);
             }
-            tbExamInvigilateUserService.saveOrUpdate(tbExamInvigilateUser);
         }
     }
 

+ 1 - 1
themis-business/src/main/resources/db/init.sql

@@ -309,7 +309,7 @@ CREATE TABLE `t_b_exam_invigilate_user` (
   `monitor_status` varchar(30) DEFAULT NULL COMMENT '监考状态,NOT_START:未开始,START:监考中,FINISHED:已结束',
   `exam_id` bigint DEFAULT NULL COMMENT '考试批次id',
   PRIMARY KEY (`id`),
-  UNIQUE KEY `t_b_exam_invigilate_user_orgId_userId_roomCode_Idx` (`org_id`,`user_id`,`room_code`)
+  UNIQUE KEY `t_b_exam_invigilate_user_orgId_userId_roomCode_Idx` (`org_id`,`user_id`,`room_code`,`exam_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='监考员设置';
 
 -- ----------------------------