|
@@ -28,6 +28,7 @@ import org.apache.rocketmq.spring.core.RocketMQListener;
|
|
|
import org.apache.rocketmq.spring.core.RocketMQPushConsumerLifecycleListener;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@@ -67,6 +68,9 @@ public class RocketWebsocketUnNormalLogConsumer implements MessageListenerConcur
|
|
|
@Transactional
|
|
|
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
|
|
|
MqDto mqDto = null;
|
|
|
+ TOeExamRecord tOeExamRecord = null;
|
|
|
+ TOeExamBreakHistory tOeExamBreakHistory = null;
|
|
|
+ TOeExamRecord tOeExamRecordUpdate = null;
|
|
|
try {
|
|
|
long threadId = Thread.currentThread().getId();
|
|
|
String threadName = Thread.currentThread().getName();
|
|
@@ -96,7 +100,9 @@ public class RocketWebsocketUnNormalLogConsumer implements MessageListenerConcur
|
|
|
Long updateTime = Long.parseLong(String.valueOf(tranMap.get("updateTime")));
|
|
|
Date date = new Date();
|
|
|
date.setTime(updateTime);
|
|
|
- TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(recordId);
|
|
|
+ tOeExamRecord = tOeExamRecordService.getById(recordId);
|
|
|
+ tOeExamRecordUpdate = new TOeExamRecord();
|
|
|
+ BeanUtils.copyProperties(tOeExamRecord, tOeExamRecordUpdate);
|
|
|
Integer breakCount = tOeExamRecord.getLeftBreakResumeCount();
|
|
|
if (Objects.isNull(breakCount) || breakCount == 0) {
|
|
|
//todo 没有断点次数,则强制交卷
|
|
@@ -105,7 +111,7 @@ public class RocketWebsocketUnNormalLogConsumer implements MessageListenerConcur
|
|
|
} else {
|
|
|
breakCount--;
|
|
|
//增加断点记录
|
|
|
- TOeExamBreakHistory tOeExamBreakHistory = new TOeExamBreakHistory(recordId, new Date(), WebsocketExceptionEnum.NET_TIME_OUT.ordinal(), WebsocketExceptionEnum.NET_TIME_OUT.name());
|
|
|
+ tOeExamBreakHistory = new TOeExamBreakHistory(recordId, new Date(), WebsocketExceptionEnum.NET_TIME_OUT.ordinal(), WebsocketExceptionEnum.NET_TIME_OUT.name());
|
|
|
tOeExamBreakHistoryService.save(tOeExamBreakHistory);
|
|
|
//更新考试记录状态
|
|
|
tOeExamRecord.setClientCurrentIp(ip);
|
|
@@ -131,6 +137,12 @@ public class RocketWebsocketUnNormalLogConsumer implements MessageListenerConcur
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
+ if (Objects.nonNull(tOeExamRecordUpdate)) {
|
|
|
+ tOeExamRecordService.updateById(tOeExamRecordUpdate);
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(tOeExamBreakHistory)) {
|
|
|
+ tOeExamBreakHistoryService.removeById(tOeExamBreakHistory.getId());
|
|
|
+ }
|
|
|
return ConsumeConcurrentlyStatus.RECONSUME_LATER;//重试
|
|
|
} finally {
|
|
|
if (Objects.nonNull(mqDto)) {
|