DeviceTimer.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.huimv.guowei.admin.timer;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.date.DateUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.huimv.guowei.admin.entity.EnvDevice;
  6. import com.huimv.guowei.admin.entity.EnvDeviceOnline;
  7. import com.huimv.guowei.admin.entity.RawData;
  8. import com.huimv.guowei.admin.service.IBaseDuckInfoService;
  9. import com.huimv.guowei.admin.service.IEnvDeviceOnlineService;
  10. import com.huimv.guowei.admin.service.IEnvDeviceService;
  11. import com.huimv.guowei.admin.service.IRawDataService;
  12. import org.springframework.context.annotation.Configuration;
  13. import org.springframework.scheduling.annotation.EnableScheduling;
  14. import org.springframework.scheduling.annotation.Scheduled;
  15. import org.springframework.stereotype.Component;
  16. import javax.annotation.Resource;
  17. import java.math.BigDecimal;
  18. import java.math.RoundingMode;
  19. import java.time.LocalDateTime;
  20. import java.util.Date;
  21. import java.util.List;
  22. @Component
  23. @EnableScheduling
  24. public class DeviceTimer {
  25. @Resource
  26. private IEnvDeviceService envDeviceService;
  27. @Resource
  28. private IEnvDeviceOnlineService envDeviceOnlineService;
  29. @Resource
  30. private IBaseDuckInfoService baseDuckInfoService;
  31. @Resource
  32. private IRawDataService rawDataService;
  33. // @Scheduled(cron = "*/5 * * * * ?")
  34. @Scheduled(cron = "0 */5 * * * ?")
  35. private void saveOnlineDevice(){
  36. String farmId = "21";
  37. double rate = 0.0;
  38. Double deviceOff = (double) envDeviceService.count(new QueryWrapper<EnvDevice>().eq("farm_id", farmId).eq("device_status", 0));
  39. Double deviceOn = (double) envDeviceService.count(new QueryWrapper<EnvDevice>().eq("farm_id", farmId).eq("device_status", 1));
  40. Double total = deviceOff+deviceOn;
  41. try {
  42. rate = (deviceOn/total)*100;
  43. }catch (ArithmeticException e){
  44. System.out.println(e);
  45. }
  46. EnvDeviceOnline envDeviceOnline = new EnvDeviceOnline();
  47. envDeviceOnline.setDeviceOn(deviceOn.intValue());
  48. envDeviceOnline.setDeviceOff(deviceOff.intValue());
  49. envDeviceOnline.setOnlineRate(new BigDecimal(rate).setScale(2, RoundingMode.UP));
  50. envDeviceOnline.setFarmId(farmId);
  51. envDeviceOnline.setCreatTime(new Date());
  52. envDeviceOnlineService.save(envDeviceOnline);
  53. }
  54. // @Scheduled(cron = "0 * * * * ?")
  55. @Scheduled(cron = "0 0 23 * * ?")
  56. private void setDayAge(){
  57. System.out.println("--->更新日龄");
  58. baseDuckInfoService.updateDayAge();
  59. System.out.println("--->更新成功");
  60. }
  61. @Scheduled(cron = "0 1 0 * * ?")
  62. private void updateDeviceOn(){
  63. System.out.println("--->更新固定称在线状态");
  64. List<EnvDevice> deviceType = envDeviceService.list(new QueryWrapper<EnvDevice>().eq("device_type", 3));
  65. DateTime dateTime = DateUtil.offsetDay(new Date(), -1);
  66. for (EnvDevice envDevice : deviceType) {
  67. String deviceCode = envDevice.getDeviceCode();
  68. Integer deviceCodeStatus = envDevice.getDeviceStatus();
  69. int count = rawDataService.count(new QueryWrapper<RawData>().eq("device_code", deviceCode).ge("create_time", dateTime));
  70. Integer status = count > 0 ? 1 :0 ;
  71. if (status.equals(deviceCodeStatus)){
  72. continue;
  73. }
  74. envDevice.setDeviceStatus(status);
  75. envDeviceService.updateById(envDevice);
  76. }
  77. System.out.println("--->更新固定称在线状态结束");
  78. }
  79. }