瀏覽代碼

更新!

TRX 1 年之前
父節點
當前提交
f61ac062e0

+ 21 - 1
OneCardIotClient/src/main/java/com/zhongshu/iot/client/model/iot/IotTemplate2DeviceSearch.java

@@ -1,12 +1,17 @@
 package com.zhongshu.iot.client.model.iot;
 
+import com.github.microservice.models.type.DeviceSpecType;
 import com.github.microservice.models.type.DeviceType;
+import com.github.microservice.models.type.OnLineState;
 import com.zhongshu.iot.client.model.baseParam.SuperSearchParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2025/1/8
@@ -22,8 +27,23 @@ public class IotTemplate2DeviceSearch extends SuperSearchParam {
     @Schema(description = "设备ID")
     private String deviceId;
 
-    @Schema(description = "设备类")
+    @Schema(description = "设备类")
     private DeviceType deviceType;
 
+    @Schema(description = "设备型号")
+    private DeviceSpecType deviceModel;
+
+    @Schema(description = "所属项目code")
+    private String projectInfoCode;
+
+    @Schema(description = "在线状态")
+    private OnLineState onLineState;
+
+    @Schema(description = "设备名称", required = false)
+    private String deviceName;
+
+    @Schema(description = "是否必须对比设备deviceId")
+    private Boolean isMustDeviceIds = Boolean.FALSE;
 
+    private List<String> mustDeviceIds = new ArrayList<>();
 }

+ 12 - 0
OneCardIotClient/src/main/java/com/zhongshu/iot/client/model/mqtt/DeviceInfoSearchParam.java

@@ -1,5 +1,8 @@
 package com.zhongshu.iot.client.model.mqtt;
 
+import com.github.microservice.models.type.DeviceSpecType;
+import com.github.microservice.models.type.DeviceType;
+import com.github.microservice.models.type.OnLineState;
 import com.zhongshu.iot.client.model.baseParam.SuperSearchParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -20,4 +23,13 @@ public class DeviceInfoSearchParam extends SuperSearchParam {
     @Schema(description = "所属项目code")
     private String projectInfoCode;
 
+    @Schema(description = "设备类型:消费机 闸机")
+    private DeviceType deviceType;
+
+    @Schema(description = "设备型号")
+    private DeviceSpecType deviceModel;
+
+    @Schema(description = "在线状态")
+    private OnLineState onLineState;
+
 }

+ 1 - 3
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/controller/iot/IotSendController.java

@@ -4,12 +4,10 @@ import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.helper.AuthHelper;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.models.iot.IotSendParam;
-import com.zhongshu.iot.server.core.service.iot.IotSendMessageService;
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.iot.server.core.service.iot.IotSendMessageService;
 import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.enums.ParameterIn;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 3
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/controller/iot/IotTemplate2DeviceController.java

@@ -47,9 +47,7 @@ public class IotTemplate2DeviceController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "模版设备列表-分页查询")
     @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
-    public ResultContent<Page<IotTemplate2DeviceModel>> pageTemplate(
-            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
-            @Parameter(required = false) IotTemplate2DeviceSearch param) {
+    public ResultContent<Page<IotTemplate2DeviceModel>> pageTemplate(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) IotTemplate2DeviceSearch param) {
         return iotTemplate2DeviceService.page(pageable, param);
     }
 

+ 10 - 17
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/dao/iot/impl/IotTemplate2DeviceDaoImpl.java

@@ -5,7 +5,9 @@ import com.zhongshu.iot.client.model.iot.IotTemplate2DeviceSearch;
 import com.zhongshu.iot.server.core.dao.base.BaseImpl;
 import com.zhongshu.iot.server.core.dao.iot.extend.IotTemplate2DeviceDaoExtend;
 import com.zhongshu.iot.server.core.domain.iot.IotTemplate2Device;
+import com.zhongshu.iot.server.core.util.CommonUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -18,7 +20,6 @@ import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.regex.Pattern;
 
 /**
  * @Author TRX
@@ -38,8 +39,15 @@ public class IotTemplate2DeviceDaoImpl extends BaseImpl implements IotTemplate2D
     public Page<IotTemplate2Device> page(Pageable pageable, IotTemplate2DeviceSearch param) {
         Criteria criteria = buildCriteriaAboutTime(param);
 
+        if (param.getIsMustDeviceIds() != null && param.getIsMustDeviceIds()) {
+            if (ObjectUtils.isEmpty(param.getMustDeviceIds())) {
+                return CommonUtil.buildEmptyPage(pageable, IotTemplate2Device.class);
+            }
+            criteria.and("deviceId").in(param.getMustDeviceIds());
+        }
+
         if (StringUtils.isNotEmpty(param.getIotTemplateId())) {
-            criteria.and("iotTemplateId").is(param.getIotTemplateId());
+            criteria.and("templateId").is(param.getIotTemplateId());
         }
 
         if (param.getDeviceType() != null) {
@@ -48,24 +56,9 @@ public class IotTemplate2DeviceDaoImpl extends BaseImpl implements IotTemplate2D
 
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
-        if (StringUtils.isNotEmpty(param.getDeviceId())) {
-            Pattern pattern = Pattern.compile("^.*" + param.getDeviceId() + ".*$");
-            criterias.add(Criteria.where("deviceId").is(pattern));
-        }
         if (!CollectionUtils.isEmpty(criterias)) {
             criteria.andOperator(criterias.toArray(new Criteria[]{}));
         }
-
-        // 关键字搜索
-//        if (StringUtils.isNotEmpty(param.getKeyWord())) {
-//            Pattern pattern = Pattern.compile("^.*" + param.getKeyWord() + ".*$");
-//            criteria.orOperator(
-//                    Criteria.where("name").regex(pattern),
-//                    Criteria.where("identifier").regex(pattern),
-//                    Criteria.where("iotTopic").regex(pattern)
-//            );
-//        }
-
         Sort sort = buildSort(param);
         Query query = Query.query(criteria);
         query.with(sort);

+ 3 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/dao/mqtt/extend/DeviceInfoDaoExtend.java

@@ -11,5 +11,8 @@ import org.springframework.data.domain.Pageable;
  * @Version: 1.0
  */
 public interface DeviceInfoDaoExtend {
+
     Page<DeviceInfo> page(Pageable pageable, DeviceInfoSearchParam param);
+
+
 }

+ 14 - 14
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/dao/mqtt/impl/DeviceInfoDaoImpl.java

@@ -1,10 +1,10 @@
 package com.zhongshu.iot.server.core.dao.mqtt.impl;
 
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.iot.client.model.mqtt.DeviceInfoSearchParam;
 import com.zhongshu.iot.server.core.dao.base.BaseImpl;
 import com.zhongshu.iot.server.core.dao.mqtt.extend.DeviceInfoDaoExtend;
 import com.zhongshu.iot.server.core.domain.iot.mqtt.DeviceInfo;
-import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
-import com.zhongshu.iot.client.model.mqtt.DeviceInfoSearchParam;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -40,14 +40,22 @@ public class DeviceInfoDaoImpl extends BaseImpl implements DeviceInfoDaoExtend {
             criteria.and("deviceId").is(param.getDeviceId());
         }
 
-        if (StringUtils.isNotEmpty(param.getEpId())) {
-            criteria.and("epId").is(param.getEpId());
-        }
-
         if (StringUtils.isNotEmpty(param.getProjectInfoCode())) {
             criteria.and("projectInfoCode").is(param.getProjectInfoCode());
         }
 
+        if (param.getDeviceModel() != null) {
+            criteria.and("deviceModel").is(param.getDeviceModel());
+        }
+
+        if (param.getDeviceType() != null) {
+            criteria.and("deviceType").is(param.getDeviceType());
+        }
+
+        if (param.getOnLineState() != null) {
+            criteria.and("onLineState").is(param.getOnLineState());
+        }
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         if (StringUtils.isNotEmpty(param.getDeviceName())) {
@@ -57,14 +65,6 @@ public class DeviceInfoDaoImpl extends BaseImpl implements DeviceInfoDaoExtend {
         if (!CollectionUtils.isEmpty(criterias)) {
             criteria.andOperator(criterias.toArray(new Criteria[]{}));
         }
-//        if (StringUtils.isNotEmpty(param.getTitle())) {
-//            Pattern pattern = Pattern.compile("^.*" + param.getTitle() + ".*$");
-//            criteria.orOperator(
-//                    Criteria.where("name").regex(pattern),
-//                    Criteria.where("content").regex(pattern)
-//            );
-//        }
-
         criteria.and("isDelete").is(Boolean.FALSE);
         Sort sort = buildSort(param);
         Query query = Query.query(criteria);

+ 21 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/iot/IotTemplate2DeviceService.java

@@ -6,6 +6,7 @@ import com.zhongshu.iot.client.model.iot.DeviceBindIotTemplate;
 import com.zhongshu.iot.client.model.iot.IotTemplate2DeviceModel;
 import com.zhongshu.iot.client.model.iot.IotTemplate2DeviceParam;
 import com.zhongshu.iot.client.model.iot.IotTemplate2DeviceSearch;
+import com.zhongshu.iot.client.model.mqtt.DeviceInfoSearchParam;
 import com.zhongshu.iot.server.core.dao.iot.IotTemplate2DeviceDao;
 import com.zhongshu.iot.server.core.dao.iot.IotTemplateDao;
 import com.zhongshu.iot.server.core.dao.mqtt.DeviceInfoDao;
@@ -20,10 +21,13 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author TRX
@@ -77,6 +81,23 @@ public class IotTemplate2DeviceService {
     }
 
     public ResultContent<Page<IotTemplate2DeviceModel>> page(Pageable pageable, IotTemplate2DeviceSearch param) {
+        if (StringUtils.isEmpty(param.getIotTemplateId())) {
+            return ResultContent.buildFail("iotTemplateId不能为空");
+        }
+        // 查询设备
+        if (StringUtils.isNotEmpty(param.getDeviceId()) || StringUtils.isNotEmpty(param.getDeviceName()) || param.getDeviceType() != null || param.getDeviceModel() != null || StringUtils.isNotEmpty(param.getProjectInfoCode()) || param.getOnLineState() != null) {
+            Pageable pageable1 = PageRequest.of(0, 10000);
+            DeviceInfoSearchParam searchParam = new DeviceInfoSearchParam();
+            BeanUtils.copyProperties(param, searchParam);
+            Page<DeviceInfo> page = deviceInfoDao.page(pageable1, searchParam);
+            List<DeviceInfo> deviceInfos = page.getContent();
+            List<String> mustDeviceIds = new ArrayList<>();
+            if (ObjectUtils.isNotEmpty(deviceInfos)) {
+                mustDeviceIds = deviceInfos.stream().map(it -> it.getDeviceId()).collect(Collectors.toList());
+            }
+            param.setIsMustDeviceIds(Boolean.TRUE);
+            param.setMustDeviceIds(mustDeviceIds);
+        }
         Page<IotTemplate2Device> page = iotTemplate2DeviceDao.page(pageable, param);
         return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
     }