SysTelcomEnentTimmer.java 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.huimv.produce.timer;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.huimv.produce.entity.SysTelecom;
  5. import com.huimv.produce.entity.SysTelecomEvent;
  6. import com.huimv.produce.mapper.SysTelecomMapper;
  7. import com.huimv.produce.service.ISysTelecomEventService;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.scheduling.annotation.Scheduled;
  10. import org.springframework.stereotype.Component;
  11. import java.text.SimpleDateFormat;
  12. import java.util.Calendar;
  13. import java.util.Date;
  14. import java.util.List;
  15. import java.util.stream.Collectors;
  16. //主要用来生产烘干数据的 时间拿时间
  17. @Component
  18. public class SysTelcomEnentTimmer {
  19. @Autowired
  20. private SysTelecomMapper sysTelecomMapper;
  21. @Autowired
  22. private ISysTelecomEventService sysTelecomEventService;
  23. //每小时执行一次
  24. // @Scheduled(cron = " 0 */59 * * * ? ")
  25. private void updateBox() {
  26. //获得设备列表 查找烘干数据
  27. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  28. LambdaQueryWrapper<SysTelecom> lambdaQueryWrapper =
  29. new LambdaQueryWrapper<>();
  30. lambdaQueryWrapper
  31. .select(SysTelecom::getDeviceId);
  32. List<String> collect = sysTelecomMapper.selectObjs(lambdaQueryWrapper).stream().map(o -> (String) o).collect(Collectors.toList());
  33. //System.out.println(collect);
  34. for (String deviceId : collect) {
  35. Calendar TimeDeviceId = Calendar.getInstance();
  36. TimeDeviceId.setTime(new Date());
  37. TimeDeviceId.add(Calendar.HOUR, -3);
  38. Date began1time = TimeDeviceId.getTime();
  39. String startTime1 = format.format(began1time);
  40. String endTime1 = format.format(new Date());
  41. LambdaQueryWrapper<SysTelecom> wrapper = Wrappers.lambdaQuery();
  42. wrapper.eq(SysTelecom::getDeviceId, deviceId);
  43. wrapper.eq(SysTelecom::getFarmId, 1);
  44. wrapper.between(SysTelecom::getTimestamp, startTime1, endTime1);
  45. List<SysTelecom> sysTelecoms = sysTelecomMapper.selectList(wrapper);//System.out.println(sysTelecoms);
  46. for (SysTelecom sysTelecom : sysTelecoms) {
  47. if( Double.parseDouble(sysTelecom.getTemp())>50){
  48. // System.out.println("温度"+sysTelecom.getTemp()+sysTelecom.getDeviceId()+sysTelecom.getTimestamp());
  49. //产生时间段
  50. Calendar eventTime = Calendar.getInstance();
  51. eventTime.setTime(sysTelecom.getTimestamp());
  52. eventTime.add(Calendar.MINUTE, -60);
  53. Date began = eventTime.getTime();
  54. String EventStartTime = format.format(began);
  55. eventTime.add(Calendar.MINUTE, +110);
  56. Date EventEndTime1 = eventTime.getTime();
  57. String EventEndTime = format.format(EventEndTime1);
  58. //查询在大于50摄氏度这条记录的 前60分钟 后60分钟 时间里,有没有存储过报警事件 有就放弃 没有就加一条
  59. int count = sysTelecomEventService.count(Wrappers.<SysTelecomEvent>lambdaQuery()
  60. .eq(SysTelecomEvent::getDeviceId,sysTelecom.getDeviceId())
  61. .eq(SysTelecomEvent::getFarmId,sysTelecom.getFarmId())
  62. .between(SysTelecomEvent::getEventTime, EventStartTime, EventEndTime));
  63. // System.out.println("插结果"+count);
  64. if(count==0){
  65. // System.out.println("保存了一条");
  66. SysTelecomEvent sysTelecomEvent = new SysTelecomEvent();
  67. sysTelecomEvent.setDeviceId(sysTelecom.getDeviceId());
  68. sysTelecomEvent.setEventTime(sysTelecom.getTimestamp());
  69. sysTelecomEvent.setEventId(sysTelecom.getId());
  70. sysTelecomEvent.setFarmId(sysTelecom.getFarmId());
  71. sysTelecomEvent.setRemark(sysTelecom.getTemp());
  72. sysTelecomEventService.save(sysTelecomEvent);
  73. }
  74. // System.out.println("抛弃");
  75. }
  76. }
  77. }
  78. }
  79. }