wisdomisite-java/src/main/java/com/zhgd/xmgl/task/OfflineAlarmTask.java

71 lines
2.6 KiB
Java
Raw Normal View History

2023-02-16 15:28:15 +08:00
package com.zhgd.xmgl.task;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
import com.zhgd.xmgl.modules.bigdevice.service.ITowerService;
import lombok.extern.log4j.Log4j;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author zzp
* @Date 2022/7/4
* Do: 离线警告任务目前需要警告的设备类型
* 升降机
* 塔吊
*/
@Log4j
@Component
public class OfflineAlarmTask {
@Autowired
private ILifterService lifterService;
@Autowired
private ITowerService towerService;
/**
* 升降机塔吊离线警告通知
* 应需求超过5分钟没有收到实时数据发送手机设备离线通知警告
* 每2分钟执行一次
*/
@Scheduled(cron = "0 0 */2 * * ?")
@SchedulerLock(name = "OfflineAlarmTask", lockAtMostFor = 1000*60*5, lockAtLeastFor = 1000*100)
public void OfflineAlarmTask() {
log.info("升降机、塔吊离线警告通知任务开始");
long start = System.currentTimeMillis();
try {
// 应需要超过5分钟无实时数据的则算作离线 对离线设备进行报警发送手机消息
// 查询离线升降机
List<Lifter> offlineLifterList = lifterService.queryOfflineLifter();
// 查询离线塔吊
List<Tower> offlineTowerList = towerService.queryOfflineTower();
if (CollectionUtils.isNotEmpty(offlineLifterList)){
log.info(""+offlineLifterList+"台升降机超5分钟离线");
for (Lifter offlineLifter : offlineLifterList) {
// 发送升降机离线警告
lifterService. offlineAlarm(offlineLifter);
}
}
if (CollectionUtils.isNotEmpty(offlineTowerList)){
log.info(""+offlineLifterList+"台塔吊超5分钟离线");
for (Tower offlineTower : offlineTowerList) {
// 发送塔吊离线警告
towerService. offlineAlarm(offlineTower);
}
}
}catch (Exception e){
log.error("升降机、塔吊离线警告通知任务异常"+e);
}finally {
log.info("升降机、塔吊离线警告通知任务结束,耗时"+(System.currentTimeMillis()-start)+"ms");
}
}
}