|
|
@@ -26,10 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Optional;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
@@ -44,6 +41,11 @@ import java.util.concurrent.TimeUnit;
|
|
|
@Slf4j
|
|
|
public class WarningNoticeLogServiceImpl extends ServiceImpl<WarningNoticeLogMapper, WarningNoticeLog> implements WarningNoticeLogService {
|
|
|
|
|
|
+ /**
|
|
|
+ * 异常识别频率(30秒识别一次)
|
|
|
+ */
|
|
|
+ private final long frequency = 30L;
|
|
|
+
|
|
|
@Autowired
|
|
|
private LabHardwareStateMapper hardwareStateMapper;
|
|
|
@Autowired
|
|
|
@@ -87,32 +89,31 @@ public class WarningNoticeLogServiceImpl extends ServiceImpl<WarningNoticeLogMap
|
|
|
|
|
|
/**
|
|
|
* 实验室有人时定时拍摄识别实验服
|
|
|
- * 每小时执行一次
|
|
|
*/
|
|
|
-// @Scheduled(cron = "0 0/2 * * * ? ")
|
|
|
public void labCoatTask() {
|
|
|
log.info("执行实验服识别定时任务!");
|
|
|
//查询实验室是否有人
|
|
|
List<LabOnlineSubVO> labSubjects = hardwareStateMapper.onlineByBigView(new LabSubjectVO());
|
|
|
//查询配置
|
|
|
WarningConfig warningConfig = warningConfigService.getOne(new LambdaQueryWrapper<WarningConfig>().eq(WarningConfig::getWarningType, 1));
|
|
|
- Optional.ofNullable(labSubjects).orElseGet(Collections::emptyList).stream().forEach(LabOnlineSubVO -> {
|
|
|
- //异常识别频率
|
|
|
- Long frequency = 30L;
|
|
|
- //异常再识别数
|
|
|
- Integer anomalyCount = warningConfig.getAnomalyCount();
|
|
|
- WarningNoticeLog warningNoticeLog = new WarningNoticeLog();
|
|
|
- warningNoticeLog.setWarningType(1);
|
|
|
- warningNoticeLog.setSubId(LabOnlineSubVO.getId());
|
|
|
- warningNoticeLog.setSubName(LabOnlineSubVO.getName());
|
|
|
- warningNoticeLog.setCreateTime(LocalDateTime.now());
|
|
|
- warningNoticeLog.setIsDeleted(Boolean.TRUE);
|
|
|
- baseMapper.insert(warningNoticeLog);
|
|
|
- for (int i = 0; i < anomalyCount; i++) {
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put(BaseConstants.PHOTOGRAPH_QUEUE,warningNoticeLog);
|
|
|
- redisService.setCacheObject(BaseConstants.PHOTOGRAPH_QUEUE+"~"+ jsonObject +"~"+ i,jsonObject, (i + 1) * frequency, TimeUnit.SECONDS);
|
|
|
+ if(Objects.nonNull(labSubjects) && labSubjects.size() > 0){
|
|
|
+ int j = 0;
|
|
|
+ for (LabOnlineSubVO labSubject : labSubjects) {
|
|
|
+ //异常再识别数
|
|
|
+ Integer anomalyCount = warningConfig.getAnomalyCount();
|
|
|
+ WarningNoticeLog warningNoticeLog = new WarningNoticeLog();
|
|
|
+ warningNoticeLog.setWarningType(1);
|
|
|
+ warningNoticeLog.setSubId(labSubject.getId());
|
|
|
+ warningNoticeLog.setSubName(labSubject.getName());
|
|
|
+ warningNoticeLog.setCreateTime(LocalDateTime.now());
|
|
|
+ warningNoticeLog.setIsDeleted(Boolean.TRUE);
|
|
|
+ baseMapper.insert(warningNoticeLog);
|
|
|
+ for (int i = 0; i < anomalyCount; i++, j++) {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put(BaseConstants.PHOTOGRAPH_QUEUE,warningNoticeLog);
|
|
|
+ redisService.setCacheObject(BaseConstants.PHOTOGRAPH_QUEUE+"~"+ jsonObject +"~"+ i,jsonObject, (j + 1) * frequency, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
}
|
|
|
}
|