Kaynağa Gözat

完善产品关联的详情接口,物模型、云函数、topic详情接口

xucaiqin 2 yıl önce
ebeveyn
işleme
de4ad9f4e1

+ 48 - 2
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/controller/IotProductController.java

@@ -8,6 +8,7 @@ import com.middle.platform.manage.biz.service.IotProductService;
 import com.middle.platform.manage.biz.service.IotUrlService;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -33,7 +34,7 @@ public class IotProductController {
      */
     @PostMapping("/list")
     public Result<Object> list(@RequestBody @Validated ProductPage productPage) {
-        return Result.ok(iotProductService.pageQuery(productPage));
+        return Result.ok(iotProductService.pageQuery(productPage), "查询成功");
     }
 
     /**
@@ -44,7 +45,7 @@ public class IotProductController {
      */
     @PostMapping("/save")
     public Result<Object> save(@RequestBody @Validated IotProductPara iotProductPara) {
-        return Result.ok(iotProductService.save(iotProductPara));
+        return Result.ok(iotProductService.save(iotProductPara), "保存成功");
     }
 
     /**
@@ -58,8 +59,30 @@ public class IotProductController {
         return Result.ok(iotProductService.remove(id), "删除成功");
     }
 
+    /**
+     * 产品详情
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("/detail")
+    public Result<Object> detail(@RequestParam("id") @NotBlank(message = "id不能为空") Long id) {
+        return Result.ok(iotProductService.detail(id), "查询成功");
+    }
+
     //物模型
 
+    /**
+     * 查询产品关联的物模型
+     *
+     * @param productId
+     * @return
+     */
+    @GetMapping("/getMod")
+    public Result<Object> getMod(@RequestParam("productId") @NotBlank(message = "id不能为空") Long productId) {
+        return Result.ok(iotModService.queryMod(productId), "查询成功");
+    }
+
     /**
      * 保存物模型
      *
@@ -81,6 +104,17 @@ public class IotProductController {
         return Result.ok(iotCloudService.save(iotCloudPara), "保存成功");
     }
 
+    /**
+     * 查询产品关联的云函数
+     *
+     * @param productId
+     * @return
+     */
+    @GetMapping("/getCloud")
+    public Result<Object> getCloud(@RequestParam("productId") @NotBlank(message = "id不能为空") Long productId) {
+        return Result.ok(iotCloudService.getCloud(productId), "查询成功");
+    }
+
     /**
      * 云函数测试
      *
@@ -94,6 +128,18 @@ public class IotProductController {
 
     //通信地址
 
+    /**
+     * 查询产品关联的地址
+     *
+     * @param productId
+     * @return
+     */
+    @GetMapping("/getUrl")
+    public Result<Object> getUrl(@RequestParam("productId") @NotBlank(message = "id不能为空") Long productId,
+                                 @RequestParam("type") @NotNull(message = "类型不能为空") Integer type) {
+        return Result.ok(iotUrlService.getUrl(productId,type), "查询成功");
+    }
+
     /**
      * 产品对应的通信地址配置
      *

+ 82 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/domain/vo/IotDeviceDetailVo.java

@@ -0,0 +1,82 @@
+package com.middle.platform.manage.biz.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.middle.platform.mybatis.core.dataobject.BaseVO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 设备表
+ *
+ * @author xucaiqin
+ * @date 2023-12-19 13:43:38
+ */
+@Getter
+@Setter
+public class IotDeviceDetailVo extends BaseVO {
+    private Long id;
+
+    /**
+     * 所属产品
+     */
+    private Long productId;
+
+    /**
+     * 设备名称
+     */
+    private String name;
+
+    /**
+     * 设备sn码
+     */
+    private String sn;
+
+    /**
+     * 设备guid
+     */
+    private String guid;
+
+    /**
+     * 备注名称
+     */
+    private String subtitle;
+
+    /**
+     * 经度
+     */
+    private BigDecimal lon;
+
+    /**
+     * 纬度
+     */
+    private BigDecimal lat;
+
+    /**
+     * 所属区域
+     */
+    private String address;
+
+    /**
+     * 最后在线时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime onlineTime;
+
+    /**
+     * 设备状态 1-在线 0-离线
+     */
+    private Integer status;
+
+    /**
+     * 启用状态 1-启用 0-禁用
+     */
+    private Integer enableFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 10 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotCloudService.java

@@ -74,4 +74,14 @@ public class IotCloudService {
         //todo 云函数测试
         return null;
     }
+
+    /**
+     * 查询云函数
+     *
+     * @param productId
+     * @return
+     */
+    public Object getCloud(Long productId) {
+        return query(productId);
+    }
 }

+ 10 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotModService.java

@@ -43,4 +43,14 @@ public class IotModService {
     private IotMod query(Long productId) {
         return iotModMapper.selectOne(new LambdaQueryWrapper<IotMod>().eq(IotMod::getProductId, productId).last("limit 1"));
     }
+
+    /**
+     * 查询物模型
+     *
+     * @param productId
+     * @return
+     */
+    public Object queryMod(Long productId) {
+        return query(productId);
+    }
 }

+ 16 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProductService.java

@@ -5,11 +5,14 @@ import com.middle.platform.common.exception.BusinessException;
 import com.middle.platform.common.utils.PageRes;
 import com.middle.platform.manage.biz.domain.req.IotProductPara;
 import com.middle.platform.manage.biz.domain.req.ProductPage;
+import com.middle.platform.manage.biz.domain.vo.IotDeviceDetailVo;
 import com.middle.platform.manage.biz.domain.vo.IotProductVo;
+import com.middle.platform.manage.biz.entity.IotDevice;
 import com.middle.platform.manage.biz.entity.IotProduct;
 import com.middle.platform.manage.biz.mapper.IotDeviceMapper;
 import com.middle.platform.manage.biz.mapper.IotProductMapper;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -78,4 +81,17 @@ public class IotProductService {
             throw new BusinessException("产品下存在关联设备,不允许删除");
         }
     }
+
+    /**
+     * 产品详情
+     *
+     * @param id
+     * @return
+     */
+    public Object detail(Long id) {
+        IotDevice iotDevice = iotDeviceMapper.selectById(id);
+        IotDeviceDetailVo iotDeviceDetailVo = new IotDeviceDetailVo();
+        BeanUtils.copyProperties(iotDevice, iotDeviceDetailVo);
+        return iotDeviceDetailVo;
+    }
 }

+ 12 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotUrlService.java

@@ -1,5 +1,6 @@
 package com.middle.platform.manage.biz.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.middle.platform.common.exception.BusinessException;
 import com.middle.platform.manage.biz.domain.req.IotUrlPara;
 import com.middle.platform.manage.biz.entity.IotUrl;
@@ -72,4 +73,15 @@ public class IotUrlService {
         iotUrlMapper.deleteById(id);
         return true;
     }
+
+    /**
+     * 获取关联的topic
+     *
+     * @param productId
+     * @param type
+     * @return
+     */
+    public Object getUrl(Long productId, Integer type) {
+        return iotUrlMapper.selectList(new LambdaQueryWrapper<IotUrl>().eq(IotUrl::getProductId, productId).eq(IotUrl::getType, type));
+    }
 }