|
@@ -32,20 +32,18 @@ public class DeviceOnlineTimer implements CommonTimerTaskRunner {
|
|
|
public void action() {
|
|
|
List<SysOrg> list = sysOrgService.list();
|
|
|
for (SysOrg sysOrg : list) {
|
|
|
- double rate = 0.0;
|
|
|
+ BigDecimal rate = BigDecimal.ZERO;
|
|
|
Integer deviceOff = Math.toIntExact(envDeviceService.count(new QueryWrapper<EnvDevice>().lambda().eq(EnvDevice::getOrgId, sysOrg.getId()).eq(EnvDevice::getStatus, 0)));
|
|
|
Integer deviceOn = Math.toIntExact(envDeviceService.count(new QueryWrapper<EnvDevice>().lambda().eq(EnvDevice::getOrgId, sysOrg.getId()).eq(EnvDevice::getStatus, 1)));
|
|
|
Integer total = deviceOff+deviceOn;
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
- try {
|
|
|
- rate = ((float)deviceOn/(float)total)*100;
|
|
|
- }catch (ArithmeticException e){
|
|
|
- System.out.println(e);
|
|
|
+ if (total != 0){
|
|
|
+ rate = BigDecimal.valueOf(((float)deviceOn/(float)total)*100);
|
|
|
}
|
|
|
EnvDeviceOnline envDeviceOnline = new EnvDeviceOnline();
|
|
|
envDeviceOnline.setDeviceOn(deviceOn);
|
|
|
envDeviceOnline.setDeviceOff(deviceOff);
|
|
|
- envDeviceOnline.setOnlineRate(new BigDecimal(rate).setScale(2, RoundingMode.UP));
|
|
|
+ envDeviceOnline.setOnlineRate(rate.setScale(2, RoundingMode.UP));
|
|
|
envDeviceOnline.setOrgId(sysOrg.getId());
|
|
|
envDeviceOnline.setCreatTime(now);
|
|
|
envDeviceOnlineService.save(envDeviceOnline);
|