Kaynağa Gözat

监控畚斗未激活调整

lipenghui 3 hafta önce
ebeveyn
işleme
7a8b01f5e8

+ 11 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java

@@ -6,8 +6,10 @@ import com.google.common.collect.ImmutableMap;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -292,4 +294,13 @@ public class DateUtils {
         Timestamp timestamp = Timestamp.valueOf(localDateTime);
         return timestamp;
     }
+
+        public static boolean checkIfFullDayDifference(String timeStr) {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime givenTime = LocalDateTime.parse(timeStr, formatter);
+            LocalDateTime now = LocalDateTime.now();
+
+            long hoursDifference = ChronoUnit.HOURS.between(givenTime, now);
+            return Math.abs(hoursDifference) >= 24;
+        }
 }

+ 13 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotDeviceMapper.java

@@ -156,12 +156,19 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
 
     default PageResult<IotDeviceDO> selectTdPageApp(IotDevicePageReqVO reqVO, Collection<Long> deptIds) {
         LambdaQueryWrapper<IotDeviceDO> wrapper = new LambdaQueryWrapper<>();
-        wrapper.like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getDeviceName, reqVO.getCommonParam())
-                .or()
-                .like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getDeviceCode, reqVO.getCommonParam())
-                .or()
-                .like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getChargeName, reqVO.getCommonParam()).orderByDesc(IotDeviceDO::getLastInlineTime)
-        ;
+//        wrapper.isNotNull(IotDeviceDO::getIfInline).like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getDeviceName, reqVO.getCommonParam())
+//                .or()
+//                .like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getDeviceCode, reqVO.getCommonParam())
+//                .or()
+//                .like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getChargeName, reqVO.getCommonParam()).orderByDesc(IotDeviceDO::getLastInlineTime)
+//        ;
+        wrapper.isNotNull(IotDeviceDO::getIfInline)
+                .and(i -> i.like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getDeviceName, reqVO.getCommonParam())
+                        .or()
+                        .like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getDeviceCode, reqVO.getCommonParam())
+                        .or()
+                        .like(StringUtils.isNotBlank(reqVO.getCommonParam()), IotDeviceDO::getChargeName, reqVO.getCommonParam())).orderByDesc(IotDeviceDO::getLastInlineTime);
+
         return selectPage(reqVO, wrapper);
     }
 

+ 20 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/TdCronJob.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.job;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
@@ -18,6 +19,7 @@ import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 @Component
 @Slf4j
@@ -41,11 +43,6 @@ public class TdCronJob implements JobHandler {
         for (IotDeviceDO device : devices) {
             String deviceCode = device.getDeviceCode();
             allDevice.stream().filter(e -> e.getSerialNumber().equals(deviceCode)).findFirst().ifPresent(e -> {
-                if (e.getStatus()==1) {
-                    device.setIfInline(5);
-                } else {
-                    device.setIfInline(e.getStatus());
-                }
                 device.setYfDeviceId(e.getDeviceId());
                 Integer i = deviceMapper.tableIfExist(e.getSerialNumber().toLowerCase());
                 if (i==1) {
@@ -57,6 +54,24 @@ public class TdCronJob implements JobHandler {
                         device.setLastInlineTime(format);
                     }
                 }
+                if (e.getStatus()==1) {
+//                    if (Objects.nonNull(device.getLastInlineTime())) {
+                        try {
+                            if (DateUtils.checkIfFullDayDifference(device.getLastInlineTime())) {
+                                device.setIfInline(4);
+                            } else {
+                                device.setIfInline(3);
+                            }
+                        } catch (Exception ex) {
+                            throw new RuntimeException(ex);
+                        }
+//                    } else {
+//                        device.setIfInline(5);
+//                    }
+//                    device.setIfInline(5);
+                } else {
+                    device.setIfInline(e.getStatus());
+                }
             });
         }
         iotDeviceMapper.updateBatch(devices);