12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package com.huimv.produce.timer;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.huimv.produce.entity.SysTelecom;
- import com.huimv.produce.entity.SysTelecomEvent;
- import com.huimv.produce.mapper.SysTelecomMapper;
- import com.huimv.produce.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("抛弃");
- }
- }
- }
- }
- }
|