|
@@ -0,0 +1,87 @@
|
|
|
+package com.huimv.video.dhicc.timmer;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.huimv.video.dhicc.entity.SysTelecom;
|
|
|
+import com.huimv.video.dhicc.entity.SysTelecomEvent;
|
|
|
+import com.huimv.video.dhicc.mapper.SysTelecomMapper;
|
|
|
+import com.huimv.video.dhicc.service.ISysTelecomEventService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+//主要用来生产烘干数据的 时间拿时间
|
|
|
+@Component
|
|
|
+public class SysTelcomEnentTimmer {
|
|
|
+ @Autowired
|
|
|
+ private SysTelecomMapper sysTelecomMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysTelecomEventService sysTelecomEventService;
|
|
|
+
|
|
|
+ //每小时执行一次
|
|
|
+ @Scheduled(cron = " 0 */59 * * * ? ")
|
|
|
+ private void updateBox() {
|
|
|
+ //获得设备列表 查找烘干数据
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ LambdaQueryWrapper<SysTelecom> lambdaQueryWrapper =
|
|
|
+ new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper
|
|
|
+ .select(SysTelecom::getDeviceId);
|
|
|
+ List<String> collect = sysTelecomMapper.selectObjs(lambdaQueryWrapper).stream().map(o -> (String) o).collect(Collectors.toList());
|
|
|
+ //System.out.println(collect);
|
|
|
+ for (String deviceId : collect) {
|
|
|
+ Calendar TimeDeviceId = Calendar.getInstance();
|
|
|
+ TimeDeviceId.setTime(new Date());
|
|
|
+ TimeDeviceId.add(Calendar.HOUR, -3);
|
|
|
+ Date began1time = TimeDeviceId.getTime();
|
|
|
+ String startTime1 = format.format(began1time);
|
|
|
+ String endTime1 = format.format(new Date());
|
|
|
+ LambdaQueryWrapper<SysTelecom> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.eq(SysTelecom::getDeviceId, deviceId);
|
|
|
+ wrapper.eq(SysTelecom::getFarmId, 1);
|
|
|
+ wrapper.between(SysTelecom::getTimestamp, startTime1, endTime1);
|
|
|
+ List<SysTelecom> sysTelecoms = sysTelecomMapper.selectList(wrapper);//System.out.println(sysTelecoms);
|
|
|
+ for (SysTelecom sysTelecom : sysTelecoms) {
|
|
|
+ if( Double.parseDouble(sysTelecom.getTemp())>50){
|
|
|
+ // System.out.println("温度"+sysTelecom.getTemp()+sysTelecom.getDeviceId()+sysTelecom.getTimestamp());
|
|
|
+ //产生时间段
|
|
|
+ Calendar eventTime = Calendar.getInstance();
|
|
|
+ eventTime.setTime(sysTelecom.getTimestamp());
|
|
|
+ eventTime.add(Calendar.MINUTE, -60);
|
|
|
+ Date began = eventTime.getTime();
|
|
|
+ String EventStartTime = format.format(began);
|
|
|
+ eventTime.add(Calendar.MINUTE, +110);
|
|
|
+ Date EventEndTime1 = eventTime.getTime();
|
|
|
+ String EventEndTime = format.format(EventEndTime1);
|
|
|
+ //查询在大于50摄氏度这条记录的 前60分钟 后60分钟 时间里,有没有存储过报警事件 有就放弃 没有就加一条
|
|
|
+ int count = sysTelecomEventService.count(Wrappers.<SysTelecomEvent>lambdaQuery()
|
|
|
+ .eq(SysTelecomEvent::getDeviceId,sysTelecom.getDeviceId())
|
|
|
+ .eq(SysTelecomEvent::getFarmId,sysTelecom.getFarmId())
|
|
|
+ .between(SysTelecomEvent::getEventTime, EventStartTime, EventEndTime));
|
|
|
+ // System.out.println("插结果"+count);
|
|
|
+ if(count==0){
|
|
|
+ // System.out.println("保存了一条");
|
|
|
+ SysTelecomEvent sysTelecomEvent = new SysTelecomEvent();
|
|
|
+ sysTelecomEvent.setDeviceId(sysTelecom.getDeviceId());
|
|
|
+ sysTelecomEvent.setEventTime(sysTelecom.getTimestamp());
|
|
|
+ sysTelecomEvent.setEventId(sysTelecom.getId());
|
|
|
+ sysTelecomEvent.setFarmId(sysTelecom.getFarmId());
|
|
|
+ sysTelecomEvent.setRemark(sysTelecom.getTemp());
|
|
|
+ sysTelecomEventService.save(sysTelecomEvent);
|
|
|
+ }
|
|
|
+ // System.out.println("抛弃");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|