TRX 1 rok temu
rodzic
commit
d3d6c3646f

+ 2 - 1
OneCardIotClient/src/main/java/com/zhongshu/iot/client/model/baseParam/SuperSearchParam.java

@@ -17,10 +17,11 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 public class SuperSearchParam implements Serializable {
+
     @Schema(hidden = true)
     private String id;
 
-    @Schema(description = "搜索时间范围")
+    @Schema(description = "搜索时间范围", hidden = true)
     private List<Long> times;
 
     @Schema(description = "开始时间", hidden = true)

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

@@ -16,4 +16,8 @@ public class DeviceInfoSearchParam extends SuperSearchParam {
 
     @Schema(description = "设备名称", required = false)
     private String deviceName;
+
+    @Schema(description = "所属项目code")
+    private String projectInfoCode;
+
 }

+ 28 - 0
OneCardIotClient/src/main/java/com/zhongshu/iot/client/openApi/base/SuperAPIModel.java

@@ -0,0 +1,28 @@
+package com.zhongshu.iot.client.openApi.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/11/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SuperAPIModel implements Serializable {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "创建时间")
+    private Long createTime;
+
+    @Schema(description = "修改时间")
+    private Long updateTime;
+
+}

+ 68 - 0
OneCardIotClient/src/main/java/com/zhongshu/iot/client/openApi/model/DeviceInfoOpenAPIModel.java

@@ -0,0 +1,68 @@
+package com.zhongshu.iot.client.openApi.model;
+
+import cn.hutool.json.JSONObject;
+import com.github.microservice.models.type.OnLineState;
+import com.zhongshu.iot.client.model.iot.IotTemplateModel;
+import com.zhongshu.iot.client.model.mqtt.ProjectInfoModel;
+import com.zhongshu.iot.client.openApi.base.SuperAPIModel;
+import com.zhongshu.iot.client.type.DataState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceInfoOpenAPIModel extends SuperAPIModel {
+
+    @Schema(description = "设备ID")
+    private String deviceId;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "在线状态")
+    private OnLineState onLineState;
+
+    private String onLineStateStr;
+
+    public String getOnLineStateStr() {
+        if (onLineState != null) {
+            return onLineState.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "数据状态")
+    private DataState state;
+
+    private String stateStr;
+
+    public String getStateStr() {
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "ip地址")
+    private String ip;
+
+    @Schema(description = "激活时间")
+    private Long activityTime;
+
+    @Schema(description = "最后上线时间")
+    private Long lastOnlineTime;
+
+    @Schema(description = "项目code")
+    private String projectInfoCode;
+
+    @Schema(description = "最后离线时间")
+    private Long lastOffLineTime;
+
+}

+ 23 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/controller/openAPi/DeviceIotOpenApiController.java

@@ -1,8 +1,22 @@
 package com.zhongshu.iot.server.core.controller.openAPi;
 
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.iot.client.model.mqtt.DeviceInfoModel;
+import com.zhongshu.iot.client.model.mqtt.DeviceInfoSearchParam;
+import com.zhongshu.iot.client.openApi.model.DeviceInfoOpenAPIModel;
+import com.zhongshu.iot.server.core.service.openApi.DeviceIotOpenApiService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
@@ -17,5 +31,14 @@ import org.springframework.web.bind.annotation.RestController;
 @Tag(name = "设备管理-开放接口")
 public class DeviceIotOpenApiController {
 
+    @Autowired
+    private DeviceIotOpenApiService deviceIotOpenApiService;
+
+    @Operation(summary = "设备列表-分页查询")
+    @RequestMapping(value = {"pageDevice"}, method = {RequestMethod.POST})
+    public ResultContent<Page<DeviceInfoOpenAPIModel>> pageDevice(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) DeviceInfoSearchParam param) {
+        return deviceIotOpenApiService.pageDevice(pageable, param);
+    }
 
 }

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

@@ -44,6 +44,10 @@ public class DeviceInfoDaoImpl extends BaseImpl implements DeviceInfoDaoExtend {
             criteria.and("epId").is(param.getEpId());
         }
 
+        if (StringUtils.isNotEmpty(param.getProjectInfoCode())) {
+            criteria.and("projectInfoCode").is(param.getProjectInfoCode());
+        }
+
         // 模糊搜索
         List<Criteria> criterias = new ArrayList<>();
         if (StringUtils.isNotEmpty(param.getDeviceName())) {

+ 5 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/mqtt/MqttInfoService.java

@@ -57,6 +57,11 @@ public class MqttInfoService {
         }
     }
 
+    /**
+     * 网关注册时,得到默认的mqtt连接
+     *
+     * @return
+     */
     public MqttInfoReturnModel getCommonMqttInfo() {
         MqttInfoReturnModel mqttInfoSimpleModel = new MqttInfoReturnModel();
         MqttInfo mqttInfo = mqttInfoDao.findTopByAddress(AddressType.Common);

+ 53 - 0
OneCardIotServer/src/main/java/com/zhongshu/iot/server/core/service/openApi/DeviceIotOpenApiService.java

@@ -0,0 +1,53 @@
+package com.zhongshu.iot.server.core.service.openApi;
+
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.iot.client.model.mqtt.DeviceInfoModel;
+import com.zhongshu.iot.client.model.mqtt.DeviceInfoSearchParam;
+import com.zhongshu.iot.client.openApi.model.DeviceInfoOpenAPIModel;
+import com.zhongshu.iot.server.core.dao.mqtt.DeviceInfoDao;
+import com.zhongshu.iot.server.core.domain.iot.mqtt.DeviceInfo;
+import com.zhongshu.iot.server.core.util.bean.BeanUtils;
+import com.zhongshu.iot.server.core.util.page.PageEntityUtil;
+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;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2024/11/11
+ */
+@Slf4j
+@Service
+public class DeviceIotOpenApiService {
+
+    @Autowired
+    private DeviceInfoDao deviceInfoDao;
+
+    /**
+     * 设备列表
+     *
+     * @param pageable
+     * @param param
+     * @return
+     */
+    public ResultContent<Page<DeviceInfoOpenAPIModel>> pageDevice(Pageable pageable, DeviceInfoSearchParam param) {
+        if (StringUtils.isEmpty(param.getProjectInfoCode())) {
+            return ResultContent.buildFail("projectInfoCode");
+        }
+        Page<DeviceInfo> page = deviceInfoDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toDeviceModel));
+    }
+
+
+    private DeviceInfoOpenAPIModel toDeviceModel(DeviceInfo entity) {
+        DeviceInfoOpenAPIModel model = new DeviceInfoOpenAPIModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+}