Browse Source

fix:修复预警信息分页接口页面过大时报错问题

黄渊昊 1 month ago
parent
commit
206a428e26

+ 13 - 18
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/service/SensorAlarmServiceImpl.java

@@ -33,8 +33,6 @@ import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
-import static jakarta.xml.bind.DatatypeConverter.parseTime;
-
 /**
  * @author jackzhou
  * @version 1.0
@@ -184,14 +182,9 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         // 获取当前登录用户ID
         String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
         // 查询创建用户为当前用户的记录
+        queryWrapper.lambda().select(SensorAlarm::getId);
         queryWrapper.lambda().eq(SensorAlarm::getCreateOrg, orgId);
 
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(new Date());
-        calendar.add(Calendar.MONTH, -2);
-        queryWrapper.lambda().ge(SensorAlarm::getCreateTime,sdf.format(calendar.getTime()));
-
         String type;
         if (StrUtil.isNotBlank(messagePageParam.getType())) {
             type = messagePageParam.getType();
@@ -202,13 +195,6 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
                 ? Arrays.asList(SensorAlarmType.SENSOR_OFF_LINE.getDeviceCode(), SensorAlarmType.SENSOR_ON_LINE.getDeviceCode())
                 : Arrays.asList(SensorAlarmType.DATA_ALARM.getDeviceCode(), SensorAlarmType.DATA_RESTORE_ALARM.getDeviceCode());
         queryWrapper.lambda().in(SensorAlarm::getType, typeCodes);
-/*        if(StrUtil.isNotBlank(type) && type.trim().equalsIgnoreCase("system")){
-            queryWrapper.lambda().and(q -> q.eq(SensorAlarm::getType, SensorAlarmType.SENSOR_OFF_LINE.getDeviceCode())
-                    .or().eq(SensorAlarm::getType, SensorAlarmType.SENSOR_ON_LINE.getDeviceCode()));
-        }else{
-            queryWrapper.lambda().and(q -> q.eq(SensorAlarm::getType, SensorAlarmType.DATA_ALARM.getDeviceCode())
-                    .or().eq(SensorAlarm::getType, SensorAlarmType.DATA_RESTORE_ALARM.getDeviceCode()));
-        }*/
         if(StrUtil.isNotBlank(messagePageParam.getSensorCode())){
             queryWrapper.lambda().eq(SensorAlarm::getSensorCode, messagePageParam.getSensorCode());
         }
@@ -223,12 +209,17 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         if (StrUtil.isNotBlank(messagePageParam.getStartTime())) {
             queryWrapper.lambda().ge(SensorAlarm::getCreateTime, DateUtil.parse(messagePageParam.getStartTime(), "yyyy-MM-dd HH:mm:ss"));  // greater than or equal to start time
         }
-        if (StrUtil.isNotBlank(messagePageParam.getEndTime())) {
+        if (StrUtil.isNotBlank(messagePageParam.getEndTime()) && StrUtil.isNotBlank(messagePageParam.getAlarmType())) {
             queryWrapper.lambda().le(SensorAlarm::getCreateTime, DateUtil.parse(messagePageParam.getEndTime(), "yyyy-MM-dd HH:mm:ss"));  // greater than or equal to start time
-        }
-        if (StrUtil.isNotBlank(messagePageParam.getAlarmType())) {
             queryWrapper.lambda().eq(SensorAlarm::getAlarmType, messagePageParam.getAlarmType());
+        } else {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date());
+            calendar.add(Calendar.MONTH, -2);
+            queryWrapper.lambda().ge(SensorAlarm::getCreateTime,sdf.format(calendar.getTime()));
         }
+
         // 按创建时间降序排序
         queryWrapper.lambda().orderByDesc(SensorAlarm::getCreateTime);
         // 执行查询,传入分页对象
@@ -238,6 +229,10 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         page.setTotal(count(queryWrapper));
         Page<SensorAlarm> sensorAlarmPage = this.page(CommonPageRequest.defaultPage(), queryWrapper).setOptimizeCountSql(false);
         stopWatch.stop();
+
+        List<SensorAlarm> sensorAlarms = listByIds(sensorAlarmPage.getRecords().stream().map(SensorAlarm::getId).collect(Collectors.toList()));
+        sensorAlarmPage.setRecords(sensorAlarms);
+
         log.info(stopWatch.prettyPrint(TimeUnit.MILLISECONDS));
         return sensorAlarmPage;
     }