| | |
| | | if (unReadList.isEmpty()) { |
| | | return; |
| | | } |
| | | RedisOpsUtils.listRPush(key, unReadList.stream().map(DeviceHmsDTO::getKey).toArray(String[]::new)); |
| | | RedisOpsUtils.listRPush(key, (Object) unReadList.stream().map(DeviceHmsDTO::getKey).toArray(String[]::new)); |
| | | // push to the web |
| | | // Collection<ConcurrentWebSocketSession> sessions = webSocketManageService.getValueWithWorkspaceAndUserType( |
| | | // device.getWorkspaceId(), UserTypeEnum.WEB.getVal()); |
| | |
| | | |
| | | @Override |
| | | public PaginationData<DeviceHmsDTO> getDeviceHmsByParam(DeviceHmsQueryParam param) { |
| | | LambdaQueryWrapper<DeviceHmsEntity> queryWrapper = new LambdaQueryWrapper<DeviceHmsEntity>() |
| | | .and(wrapper -> param.getDeviceSn().forEach(sn -> wrapper.eq(DeviceHmsEntity::getSn, sn).or())) |
| | | .between(param.getBeginTime() != null && param.getEndTime() != null, |
| | | DeviceHmsEntity::getCreateTime, param.getBeginTime(), param.getEndTime()) |
| | | .eq(param.getUpdateTime() != null, DeviceHmsEntity::getUpdateTime, param.getUpdateTime()) |
| | | .eq(param.getLevel() != null, DeviceHmsEntity::getLevel, param.getLevel()) |
| | | .like(StringUtils.hasText(param.getMessage()) && |
| | | HmsEnum.MessageLanguage.ZH.getLanguage().equals(param.getLanguage()), |
| | | DeviceHmsEntity::getMessageZh, param.getMessage()) |
| | | .like(StringUtils.hasText(param.getMessage()) && |
| | | HmsEnum.MessageLanguage.EN.getLanguage().equals(param.getLanguage()), |
| | | DeviceHmsEntity::getMessageEn, param.getMessage()) |
| | | .orderByDesc(DeviceHmsEntity::getCreateTime); |
| | | if (param.getPage() == null || param.getPageSize() == null) { |
| | | param.setPage(1L); |
| | | param.setPageSize(Long.valueOf(mapper.selectCount(queryWrapper))); |
| | | // 1. 核心兜底:参数为null时初始化空对象(结合实体默认值,避免所有NPE) |
| | | if (param == null) { |
| | | param = new DeviceHmsQueryParam(); |
| | | } |
| | | |
| | | Page<DeviceHmsEntity> pagination = mapper.selectPage(new Page<>(param.getPage(), param.getPageSize()), queryWrapper); |
| | | LambdaQueryWrapper<DeviceHmsEntity> queryWrapper = new LambdaQueryWrapper<DeviceHmsEntity>(); |
| | | |
| | | List<DeviceHmsDTO> deviceHmsList = pagination.getRecords().stream().map(this::entity2Dto).collect(Collectors.toList()); |
| | | // 2. 设备SN条件:仅当集合非空时添加IN条件(实体已兜底空集合,无需判null) |
| | | if (!param.getDeviceSn().isEmpty()) { |
| | | queryWrapper.in(DeviceHmsEntity::getSn, param.getDeviceSn()); |
| | | } |
| | | |
| | | // 3. 创建时间区间:① 两个时间都非null ② 开始时间≤结束时间(避免无效条件) |
| | | if (param.getBeginTime() != null && param.getEndTime() != null) { |
| | | //if (param.getBeginTime() <= param.getEndTime()) { |
| | | queryWrapper.between(DeviceHmsEntity::getCreateTime, param.getBeginTime(), param.getEndTime()); |
| | | // } else { |
| | | // // 可选:抛异常/日志提醒/交换时间顺序 |
| | | // // log.warn("创建时间区间不合法:beginTime({}) > endTime({})", param.getBeginTime(), param.getEndTime()); |
| | | // } |
| | | } |
| | | |
| | | // 4. 更新时间:参数非null时添加 |
| | | queryWrapper.eq(param.getUpdateTime() != null, DeviceHmsEntity::getUpdateTime, param.getUpdateTime()); |
| | | |
| | | // 5. 级别:参数非null时添加 |
| | | queryWrapper.eq(param.getLevel() != null, DeviceHmsEntity::getLevel, param.getLevel()); |
| | | |
| | | // 6. 消息模糊查询:按语言匹配(语言为null/空时自动忽略) |
| | | String language = param.getLanguage(); |
| | | String message = param.getMessage(); |
| | | if (StringUtils.hasText(message)) { |
| | | if (HmsEnum.MessageLanguage.ZH.getLanguage().equals(language)) { |
| | | queryWrapper.like(DeviceHmsEntity::getMessageZh, message); |
| | | } else if (HmsEnum.MessageLanguage.EN.getLanguage().equals(language)) { |
| | | queryWrapper.like(DeviceHmsEntity::getMessageEn, message); |
| | | } |
| | | // 语言不匹配/为null时,不添加任何消息条件 |
| | | } |
| | | |
| | | // 7. 固定排序:创建时间降序 |
| | | queryWrapper.orderByDesc(DeviceHmsEntity::getCreateTime); |
| | | |
| | | // 8. 分页参数校验(避免非法值:page<1 / pageSize≤0) |
| | | Long page = param.getPage() == null ? 1L : Math.max(param.getPage(), 1L); // 页码最小为1 |
| | | Long pageSize = param.getPage() == null ? 1L : param.getPageSize() <= 0 ? 10L : param.getPageSize(); // 页大小默认10 |
| | | |
| | | // 9. 「传空返回所有」的分页处理:pageSize为null/0时,查询全部数据 |
| | | if (param.getPageSize() == null || param.getPageSize() <= 0) { |
| | | pageSize = (long) mapper.selectCount(queryWrapper); // 总条数作为页大小 |
| | | } |
| | | |
| | | // 10. 执行分页查询 |
| | | Page<DeviceHmsEntity> pagination = mapper.selectPage(new Page<>(page, pageSize), queryWrapper); |
| | | |
| | | // 11. 实体转DTO |
| | | List<DeviceHmsDTO> deviceHmsList = pagination.getRecords().stream() |
| | | .map(this::entity2Dto) |
| | | .collect(Collectors.toList()); |
| | | |
| | | return new PaginationData<DeviceHmsDTO>(deviceHmsList, new Pagination(pagination)); |
| | | |
| | | // region 原代码注释备份一份 |
| | | // LambdaQueryWrapper<DeviceHmsEntity> queryWrapper = new LambdaQueryWrapper<DeviceHmsEntity>() |
| | | // .and(wrapper -> param.getDeviceSn().forEach(sn -> wrapper.eq(DeviceHmsEntity::getSn, sn).or())) |
| | | // .between(param.getBeginTime() != null && param.getEndTime() != null, |
| | | // DeviceHmsEntity::getCreateTime, param.getBeginTime(), param.getEndTime()) |
| | | // .eq(param.getUpdateTime() != null, DeviceHmsEntity::getUpdateTime, param.getUpdateTime()) |
| | | // .eq(param.getLevel() != null, DeviceHmsEntity::getLevel, param.getLevel()) |
| | | // .like(StringUtils.hasText(param.getMessage()) && |
| | | // HmsEnum.MessageLanguage.ZH.getLanguage().equals(param.getLanguage()), |
| | | // DeviceHmsEntity::getMessageZh, param.getMessage()) |
| | | // .like(StringUtils.hasText(param.getMessage()) && |
| | | // HmsEnum.MessageLanguage.EN.getLanguage().equals(param.getLanguage()), |
| | | // DeviceHmsEntity::getMessageEn, param.getMessage()) |
| | | // .orderByDesc(DeviceHmsEntity::getCreateTime); |
| | | // if (param.getPage() == null || param.getPageSize() == null) { |
| | | // param.setPage(1L); |
| | | // param.setPageSize(Long.valueOf(mapper.selectCount(queryWrapper))); |
| | | // } |
| | | // |
| | | // Page<DeviceHmsEntity> pagination = mapper.selectPage(new Page<>(param.getPage(), param.getPageSize()), queryWrapper); |
| | | // |
| | | // List<DeviceHmsDTO> deviceHmsList = pagination.getRecords().stream().map(this::entity2Dto).collect(Collectors.toList()); |
| | | // |
| | | // return new PaginationData<DeviceHmsDTO>(deviceHmsList, new Pagination(pagination)); |
| | | // endregion |
| | | } |
| | | |
| | | @Override |
| | |
| | | new LambdaUpdateWrapper<DeviceHmsEntity>() |
| | | .eq(DeviceHmsEntity::getSn, deviceSn) |
| | | .eq(DeviceHmsEntity::getUpdateTime, 0L)); |
| | | // Delete unread messages cached in redis. |
| | | // 删除Redis中缓存的未读消息。 |
| | | RedisOpsUtils.del(RedisConst.HMS_PREFIX + deviceSn); |
| | | } |
| | | |