DeviceOnlineTimer.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package vip.xiaonuo.Timer;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Component;
  6. import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
  7. import vip.xiaonuo.modular.env.envDeviceOnline.entity.EnvDeviceOnline;
  8. import vip.xiaonuo.modular.env.envDeviceOnline.service.EnvDeviceOnlineService;
  9. import vip.xiaonuo.modular.env.envdevice.entity.EnvDevice;
  10. import vip.xiaonuo.modular.env.envdevice.service.EnvDeviceService;
  11. import vip.xiaonuo.sys.modular.org.entity.SysOrg;
  12. import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
  13. import vip.xiaonuo.sys.modular.org.service.SysOrgService;
  14. import java.math.BigDecimal;
  15. import java.math.RoundingMode;
  16. import java.time.LocalDateTime;
  17. import java.util.List;
  18. @Slf4j
  19. @Component
  20. public class DeviceOnlineTimer implements CommonTimerTaskRunner {
  21. @Autowired
  22. private SysOrgService sysOrgService;
  23. @Autowired
  24. private EnvDeviceService envDeviceService;
  25. @Autowired
  26. private EnvDeviceOnlineService envDeviceOnlineService;
  27. @Override
  28. public void action() {
  29. List<SysOrg> list = sysOrgService.list();
  30. for (SysOrg sysOrg : list) {
  31. double rate = 0.0;
  32. Integer deviceOff = Math.toIntExact(envDeviceService.count(new QueryWrapper<EnvDevice>().lambda().eq(EnvDevice::getOrgId, sysOrg.getId()).eq(EnvDevice::getStatus, 0)));
  33. Integer deviceOn = Math.toIntExact(envDeviceService.count(new QueryWrapper<EnvDevice>().lambda().eq(EnvDevice::getOrgId, sysOrg.getId()).eq(EnvDevice::getStatus, 1)));
  34. Integer total = deviceOff+deviceOn;
  35. LocalDateTime now = LocalDateTime.now();
  36. try {
  37. rate = ((float)deviceOn/(float)total)*100;
  38. }catch (ArithmeticException e){
  39. System.out.println(e);
  40. }
  41. EnvDeviceOnline envDeviceOnline = new EnvDeviceOnline();
  42. envDeviceOnline.setDeviceOn(deviceOn);
  43. envDeviceOnline.setDeviceOff(deviceOff);
  44. envDeviceOnline.setOnlineRate(new BigDecimal(rate).setScale(2, RoundingMode.UP));
  45. envDeviceOnline.setOrgId(sysOrg.getId());
  46. envDeviceOnline.setCreatTime(now);
  47. envDeviceOnlineService.save(envDeviceOnline);
  48. }
  49. }
  50. }