Browse Source

web接口调整

hxd 3 months ago
parent
commit
fd3ad31168
21 changed files with 454 additions and 105 deletions
  1. 3 6
      portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/DeviceController.java
  2. 5 4
      portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/RoomController.java
  3. 18 1
      portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebDeviceController.java
  4. 5 4
      portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebRoomController.java
  5. 6 1
      portal-service-common/src/main/java/com/hfln/portal/common/constant/mqtt/topic/TopicConstants.java
  6. 6 1
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/device/DeviceDTO.java
  7. 1 2
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/RegionDTO.java
  8. 40 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/RoomDTO.java
  9. 39 0
      portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/SubRegionDTO.java
  10. 3 11
      portal-service-common/src/main/java/com/hfln/portal/common/request/device/DeviceBandingParams.java
  11. 82 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/device/UpdateDeviceParams.java
  12. 51 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/room/RegionInfo.java
  13. 3 3
      portal-service-common/src/main/java/com/hfln/portal/common/request/room/RoomParam.java
  14. 46 0
      portal-service-common/src/main/java/com/hfln/portal/common/request/room/SubRegionInfo.java
  15. 6 8
      portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/DeviceGateway.java
  16. 111 50
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java
  17. 0 3
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/UserGatewayImpl.java
  18. 5 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/DevInfo.java
  19. 2 2
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/DevRoomService.java
  20. 13 0
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevInfoServiceImpl.java
  21. 9 9
      portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevRoomServiceImpl.java

+ 3 - 6
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/DeviceController.java

@@ -3,10 +3,7 @@ package com.hfln.portal.application.controller.wap;
 import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
 import com.hfln.portal.common.dto.data.device.DeviceDTO;
-import com.hfln.portal.common.request.device.DeviceBandingParams;
-import com.hfln.portal.common.request.device.DeviceListParams;
-import com.hfln.portal.common.request.device.DeviceLocationParams;
-import com.hfln.portal.common.request.device.DeviceTransferParams;
+import com.hfln.portal.common.request.device.*;
 import com.hfln.portal.common.response.device.WcTimesQueryRes;
 import com.hfln.portal.domain.gateway.DeviceGateway;
 import io.swagger.v3.oas.annotations.Operation;
@@ -66,8 +63,8 @@ public class DeviceController {
 
     @PostMapping("/updateDevice")
     @Operation(summary = "设备信息修改")
-    public ApiResult<Boolean> updateDevice(@RequestBody @Valid DeviceBandingParams request) {
-        return ApiResult.success(deviceGateway.updateDevice(request));
+    public ApiResult<Boolean> updateDevice(@RequestBody @Valid UpdateDeviceParams params) {
+        return ApiResult.success(deviceGateway.updateDevice(params));
     }
 
 

+ 5 - 4
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/RoomController.java

@@ -2,7 +2,8 @@ package com.hfln.portal.application.controller.wap;
 
 import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
-import com.hfln.portal.common.dto.data.room.RoomDto;
+import com.hfln.portal.common.dto.data.room.RoomDTO;
+import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.domain.gateway.DeviceGateway;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,14 +27,14 @@ public class RoomController {
 
     @GetMapping("/readRoom")
     @Operation(summary = "读取房间信息")
-    public ApiResult<RoomDto> readRoom(@RequestParam Long devId) {
+    public ApiResult<RoomDTO> readRoom(@RequestParam Long devId) {
         return ApiResult.success(deviceGateway.readRoom(devId));
     }
 
     @PostMapping("/saveRoom")
     @Operation(summary = "房间布局保存")
-    public ApiResult<Boolean> saveRoom(@Valid @RequestBody RoomDto roomDto) {
-        return ApiResult.success(deviceGateway.saveRoom(roomDto));
+    public ApiResult<Boolean> saveRoom(@Valid @RequestBody RoomParam param) {
+        return ApiResult.success(deviceGateway.saveRoom(param));
     }
 
     @PostMapping("/uploadFloorPlan")

+ 18 - 1
portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebDeviceController.java

@@ -3,10 +3,12 @@ package com.hfln.portal.application.controller.web;
 import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
 import com.hfln.portal.common.dto.data.device.DeviceDTO;
-import com.hfln.portal.common.request.web.DeviceAddParam;
 import com.hfln.portal.common.request.device.DeviceListQueryReq;
+import com.hfln.portal.common.request.device.UpdateDeviceParams;
+import com.hfln.portal.common.request.web.DeviceAddParam;
 import com.hfln.portal.common.vo.PageRecord;
 import com.hfln.portal.common.vo.UploadRes;
+import com.hfln.portal.domain.gateway.DeviceGateway;
 import com.hfln.portal.domain.gateway.WebGateway;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -28,6 +30,9 @@ public class WebDeviceController {
     @Autowired
     private WebGateway webGateway;
 
+    @Autowired
+    private DeviceGateway DeviceGateway;
+
     @PostMapping("/uploadDev")
     @Operation(summary = "excel上传设备信息")
     public ApiResult<UploadRes> uploadDev(@Valid @RequestParam MultipartFile file) throws IOException {
@@ -47,4 +52,16 @@ public class WebDeviceController {
         return ApiResult.success();
     }
 
+    @GetMapping("/query")
+    @Operation(summary = "查询设备详情")
+    public ApiResult<DeviceDTO> query(@RequestParam("devId") String devId) {
+        return ApiResult.success(DeviceGateway.queryDeviceById(devId));
+    }
+
+    @PostMapping("/updateDevice")
+    @Operation(summary = "更新设备信息")
+    public ApiResult<Boolean> updateDevice(@Valid @RequestBody UpdateDeviceParams Params) {
+        return ApiResult.success(DeviceGateway.updateDevice(Params));
+    }
+
 }

+ 5 - 4
portal-service-application/src/main/java/com/hfln/portal/application/controller/web/WebRoomController.java

@@ -3,7 +3,8 @@ package com.hfln.portal.application.controller.web;
 
 import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
-import com.hfln.portal.common.dto.data.room.RoomDto;
+import com.hfln.portal.common.dto.data.room.RoomDTO;
+import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.domain.gateway.DeviceGateway;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -25,13 +26,13 @@ public class WebRoomController {
 
     @GetMapping("/readRoom")
     @Operation(summary = "读取房间信息")
-    public ApiResult<RoomDto> readRoom(@RequestParam Long devId) {
+    public ApiResult<RoomDTO> readRoom(@RequestParam Long devId) {
         return ApiResult.success(deviceGateway.readRoom(devId));
     }
 
     @PostMapping("/saveRoom")
     @Operation(summary = "房间布局保存")
-    public ApiResult<Boolean> saveRoom(@Valid @RequestBody RoomDto roomDto) {
-        return ApiResult.success(deviceGateway.saveRoom(roomDto));
+    public ApiResult<Boolean> saveRoom(@Valid @RequestBody RoomParam roomParam) {
+        return ApiResult.success(deviceGateway.saveRoom(roomParam));
     }
 }

+ 6 - 1
portal-service-common/src/main/java/com/hfln/portal/common/constant/mqtt/topic/TopicConstants.java

@@ -17,12 +17,17 @@ public interface TopicConstants {
     // 获取设备参数
     String TOPIC_DEV_GET_PARAM = "/mps/get_device_param";
 
-
+    //向设备发送设备配置参数
     String TOPIC_SET_DEVICE_PARAM = "/dev/%s/set_device_param";
 
     //向雷达发送设备信息
     String TOPIC_MPS_SET_DEVICE_PARAM = "/mps/set_device_param";
 
+    //向算法发送子区域参数
+    String TOPIC_DAS_SET_SUB_REGION_PARAM = "/opc/update_sub_regions";
+
+    //向算法发送家具参数
+    String TOPIC_DAS_SET_FURNITURE_PARAM = "/opc/update_furnitures";
 
     // 订阅主题
     String TOPIC_DAS_EVENT = "/das/event";

+ 6 - 1
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/device/DeviceDTO.java

@@ -106,7 +106,7 @@ public class DeviceDTO extends BaseVO {
      * 雷达监测范围Y开始
      */
     @Schema(description = "雷达监测范围Y开始")
-    private BigDecimal yystart;
+    private BigDecimal yyStart;
 
     /**
      * 雷达监测范围Z开始
@@ -167,6 +167,11 @@ public class DeviceDTO extends BaseVO {
      */
     @Schema(description = "北向夹角")
     private BigDecimal northAngle;
+    /**
+     * 激活时间
+     */
+    @Schema(description = "激活时间")
+    private LocalDateTime activeTime;
 
 //    /**
 //     * 安装坐标x

+ 1 - 2
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/RegionInfo.java → portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/RegionDTO.java

@@ -6,8 +6,7 @@ import lombok.Data;
 import java.math.BigDecimal;
 
 @Data
-public class RegionInfo {
-
+public class RegionDTO {
 
     @Schema(description = "名称")
     private String name;

+ 40 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/RoomDTO.java

@@ -0,0 +1,40 @@
+package com.hfln.portal.common.dto.data.room;
+
+import com.hfln.portal.common.vo.BaseDto;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RoomDTO extends BaseDto {
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Long roomId;
+
+    /**
+     * 设备ID
+     */
+    @Schema(description = "设备ID")
+    private Long devId;
+
+
+    /**
+     * 子区域
+     */
+    @Schema(description = "子区域")
+    private List<SubRegionDTO> subRegions;
+
+    /**
+     * 家具
+     */
+    @Schema(description = "家具")
+    private List<RegionDTO> furnitures;
+
+}

+ 39 - 0
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/SubRegionDTO.java

@@ -0,0 +1,39 @@
+package com.hfln.portal.common.dto.data.room;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SubRegionDTO {
+
+
+    private BigDecimal startXx;
+
+    private BigDecimal stopXx;
+
+    private BigDecimal StartYy;
+
+    private BigDecimal stopYy;
+
+    private BigDecimal startZz;
+
+    private BigDecimal stopZz;
+
+    private Integer isLowSnr;
+
+    @Schema(description = "是否为门: 0-是,1-不是")
+    private Integer isDoor;
+
+    @Schema(description = "人员进入时间 默认3")
+    private BigDecimal presenceEnterDuration;
+
+    @Schema(description = "人员离开时间 默认3")
+    private BigDecimal presenceExitDuration;
+
+    @Schema(description = "是否开启区域跟踪存在 0-否,1-是")
+    private BigDecimal trackPresence;
+    @Schema(description = "是否屏蔽区域跌倒检测 0-否,1-是")
+    private BigDecimal excludeFalling;
+}

+ 3 - 11
portal-service-common/src/main/java/com/hfln/portal/common/request/device/DeviceBandingParams.java

@@ -25,13 +25,7 @@ public class DeviceBandingParams extends BaseVO {
     @Size(max = 10, message = "设备名称不能超过10个字符")
     private String devName;
 
-    @Schema(description = "监测X长度: xxEnd-xxStart")
-    private BigDecimal length;
-
-    @Schema(description = "监测Y宽度:yyEnd-yyStart")
-    private BigDecimal width;
-
-    @Schema(description = "安装高度")
+    @Schema(description = "安装高度: 250 - 370 cm 之内")
     @DecimalMax(value = "370", message = "height不能大于370")
     @DecimalMin(value = "250", message = "height不能小于250")
     private BigDecimal height;
@@ -80,11 +74,9 @@ public class DeviceBandingParams extends BaseVO {
 
 
     @Schema(description = "雷达监测范围z结束,范围:200-300 cm之内")
-    @DecimalMin(value = "0", message = "zzEnd不能小于0")
-    @DecimalMax(value = "5", message = "zzEnd不能大于5")
+    @DecimalMin(value = "200", message = "zzEnd不能小于200")
+    @DecimalMax(value = "300", message = "zzEnd不能大于300")
     private BigDecimal zzEnd;
 
-    @Schema(description = "指示灯开关:0-关闭,1-开启")
-    private int statusLight;
 
 }

+ 82 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/device/UpdateDeviceParams.java

@@ -0,0 +1,82 @@
+package com.hfln.portal.common.request.device;
+
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Schema(description = "修改设备信息")
+public class UpdateDeviceParams extends BaseVO {
+
+    @NotEmpty(message = "设备Id不能为空")
+    @Schema(description = "设备ID", required = true)
+    private String clientId;
+
+    @NotNull(message = "用户Id不能为空")
+    @Schema(description = "用户Id", required = true)
+    private Long userId;
+
+    @Schema(description = "设备名称:最多10个字符")
+    @Size(max = 10, message = "设备名称不能超过10个字符")
+    private String devName;
+
+    @Schema(description = "安装高度: 250 - 370 cm 之内")
+    @DecimalMax(value = "370", message = "height不能大于370")
+    @DecimalMin(value = "250", message = "height不能小于250")
+    private BigDecimal height;
+
+    @Schema(description = "WIFI名称")
+    private String wifiName;
+
+    @Schema(description = "WIFI密码")
+    private String wifiPassword;
+
+    @Schema(description = "北向夹角 允许传值: 0,90,180,270")
+    private BigDecimal northAngle;
+
+    @Schema(description = "安装方式:Wall-墙装,Ceiling-顶装")
+    private String mountPlain;
+
+    @Schema(description = "安装位置:Toilet-卫生间,Bedroom-卧室,LivingRoom-客厅,Restaurant-餐厅")
+    private String installPosition;
+
+    @Schema(description = "雷达监测范围x开始,范围:-200-200 cm之内")
+    @DecimalMin(value = "-200", message = "xxStart不能小于-200")
+    @DecimalMax(value = "200", message = "xxStart不能大于200")
+    private BigDecimal xxStart;
+
+    @Schema(description = "雷达监测范围x结束,范围:-200-200 cm之内,且xxEnd > xxStart")
+    @DecimalMin(value = "-200", message = "xxEnd不能小于-200")
+    @DecimalMax(value = "200", message = "xxEnd不能大于200")
+    private BigDecimal xxEnd;
+
+
+    @Schema(description = "雷达监测范围y开始,范围:-250-250 cm之内")
+    @DecimalMin(value = "-250", message = "yyStart不能小于-250")
+    @DecimalMax(value = "250", message = "yyStart不能大于250")
+    private BigDecimal yyStart;
+
+    @Schema(description = "雷达监测范围y结束,范围:-250-250 cm之内,且yyEnd > yyStart")
+    @DecimalMin(value = "-250", message = "yyEnd不能小于-250")
+    @DecimalMax(value = "250", message = "yyEnd不能大于250")
+    private BigDecimal yyEnd;
+
+
+    @Schema(description = "雷达监测范围z开始,范围:0-5 cm之内")
+    @DecimalMin(value = "0", message = "zzStart不能小于0")
+    @DecimalMax(value = "5", message = "zzStart不能大于5")
+    private BigDecimal zzStart;
+
+
+    @Schema(description = "雷达监测范围z结束,范围:200-300 cm之内")
+    @DecimalMin(value = "200", message = "zzEnd不能小于200")
+    @DecimalMax(value = "300", message = "zzEnd不能大于300")
+    private BigDecimal zzEnd;
+
+}

+ 51 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/room/RegionInfo.java

@@ -0,0 +1,51 @@
+package com.hfln.portal.common.request.room;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class RegionInfo {
+
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "类型")
+    private String type;
+
+    @Schema(description = "家具宽度 cm")
+    private BigDecimal width;
+
+    @Schema(description = "家具长度 cm")
+    private BigDecimal length;
+
+    @Schema(description = "距离检测范围上方位置  cm")
+    private BigDecimal top;
+
+    @Schema(description = "距离检测范围左边位置  cm")
+    private BigDecimal left;
+
+    @Schema(description = "旋转角度: 0°,90°,180°,270°")
+    private BigDecimal rotate;
+
+    @Schema(description = "距离雷达的X距离")
+    private BigDecimal x;
+
+    @Schema(description = "距离雷达的Y距离")
+    private BigDecimal y;
+
+    //    @Schema(description = "距离雷达的X距离")
+    //    private BigDecimal yuanX;
+    //
+    //    @Schema(description = "距离雷达的Y距离")
+    //    private BigDecimal yuanY;
+    //
+    //    @Schema(description = "长度")
+    //    private String widthToM;
+    //
+    //    @Schema(description = "宽度")
+    //    private String heightToM;
+
+}

+ 3 - 3
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/room/RoomDto.java → portal-service-common/src/main/java/com/hfln/portal/common/request/room/RoomParam.java

@@ -1,4 +1,4 @@
-package com.hfln.portal.common.dto.data.room;
+package com.hfln.portal.common.request.room;
 
 
 import com.hfln.portal.common.vo.BaseVO;
@@ -11,7 +11,7 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @Schema(description = "设备房间")
 @Data
-public class RoomDto extends BaseVO {
+public class RoomParam extends BaseVO {
 
 
 
@@ -32,7 +32,7 @@ public class RoomDto extends BaseVO {
      * 子区域
      */
     @Schema(description = "子区域")
-    private List<RegionInfo> subRegions;
+    private List<SubRegionInfo> subRegions;
 
     /**
      * 家具

+ 46 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/room/SubRegionInfo.java

@@ -0,0 +1,46 @@
+package com.hfln.portal.common.request.room;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SubRegionInfo {
+
+    @Schema(description = "屏蔽子区域X开始")
+    private BigDecimal StartXx;
+
+    @Schema(description = "屏蔽子区域X结束")
+    private BigDecimal StopXx;
+
+    @Schema(description = "屏蔽子区域Y开始")
+    private BigDecimal StartYy;
+
+    @Schema(description = "屏蔽子区域Y结束")
+    private BigDecimal StopYy;
+
+    @Schema(description = "屏蔽子区域Z开始")
+    private BigDecimal StartZz;
+
+    @Schema(description = "屏蔽子区域Z结束")
+    private BigDecimal StopZz;
+
+    private Integer IsLowSnr;
+
+    @Schema(description = "是否为门: 0-是,1-不是")
+    private Integer IsDoor;
+
+    @Schema(description = "人员进入时间 默认3")
+    private BigDecimal PresenceEnterDuration;
+
+    @Schema(description = "人员离开时间 默认3")
+    private BigDecimal PresenceExitDuration;
+
+    @Schema(description = "是否开启区域跟踪存在 0-否,1-是")
+    private BigDecimal trackPresence;
+
+    @Schema(description = "是否屏蔽区域跌倒检测 0-否,1-是")
+    private BigDecimal excludeFalling;
+}

+ 6 - 8
portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/DeviceGateway.java

@@ -3,12 +3,10 @@ package com.hfln.portal.domain.gateway;
 import com.hfln.portal.common.dto.data.device.DeviceDTO;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
 import com.hfln.portal.common.dto.data.home.HomeInfoDTO;
-import com.hfln.portal.common.dto.data.room.RoomDto;
+import com.hfln.portal.common.dto.data.room.RoomDTO;
+import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.common.dto.data.share.ShareDto;
-import com.hfln.portal.common.request.device.DeviceBandingParams;
-import com.hfln.portal.common.request.device.DeviceListParams;
-import com.hfln.portal.common.request.device.DeviceLocationParams;
-import com.hfln.portal.common.request.device.DeviceTransferParams;
+import com.hfln.portal.common.request.device.*;
 import com.hfln.portal.common.request.event.EventListParams;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
@@ -39,7 +37,7 @@ public interface DeviceGateway {
 
     Boolean handleEvent(Long eventListId);
 
-    Boolean updateDevice(DeviceBandingParams request);
+    Boolean updateDevice(UpdateDeviceParams params);
 
     Boolean updateDeviceLocation(DeviceLocationParams params);
 
@@ -54,9 +52,9 @@ public interface DeviceGateway {
      * 房间布局
      */
 
-    RoomDto readRoom(Long devId);
+    RoomDTO readRoom(Long devId);
 
-    Boolean saveRoom(RoomDto roomDto);
+    Boolean saveRoom(RoomParam param);
 
 
     /**

+ 111 - 50
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java

@@ -13,14 +13,14 @@ import com.hfln.portal.common.dto.data.event.AlarmEventDTO;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
 import com.hfln.portal.common.dto.data.home.HomeInfoDTO;
 import com.hfln.portal.common.dto.data.oss.OssFileDTO;
-import com.hfln.portal.common.dto.data.room.RegionInfo;
-import com.hfln.portal.common.dto.data.room.RoomDto;
+import com.hfln.portal.common.dto.data.room.RegionDTO;
+import com.hfln.portal.common.dto.data.room.RoomDTO;
+import com.hfln.portal.common.dto.data.room.SubRegionDTO;
 import com.hfln.portal.common.dto.data.share.ShareDto;
-import com.hfln.portal.common.request.device.DeviceBandingParams;
-import com.hfln.portal.common.request.device.DeviceListParams;
-import com.hfln.portal.common.request.device.DeviceLocationParams;
-import com.hfln.portal.common.request.device.DeviceTransferParams;
+import com.hfln.portal.common.request.device.*;
 import com.hfln.portal.common.request.event.EventListParams;
+import com.hfln.portal.common.request.room.RoomParam;
+import com.hfln.portal.common.request.room.SubRegionInfo;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
 import com.hfln.portal.common.request.share.updateShareParam;
@@ -47,7 +47,6 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -259,17 +258,11 @@ public class DeviceGatewayImpl implements DeviceGateway {
         Map<String, BigDecimal> z_cm = new HashMap<>();
         z_cm.put("z_cm", request.getHeight());
 
-        //构建呼吸灯
-        int indicatorLed = 0;
-        if (request.getStatusLight() == 0){
-            indicatorLed = 1;
-        }
 
         //发送最终消息
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("ext_region", baseParent);
         jsonObject.put("sensor_location", z_cm);
-        jsonObject.put("indicator_led", indicatorLed);
 
         try {
             mqttClient.sendMessage(topic, jsonObject.toJSONString());
@@ -344,37 +337,35 @@ public class DeviceGatewayImpl implements DeviceGateway {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean updateDevice(DeviceBandingParams request) {
-        // 1. 安全获取长度和宽度,提供默认值
-        BigDecimal length = Optional.ofNullable(request.getLength()).orElse(BigDecimal.ZERO);
-        BigDecimal width = Optional.ofNullable(request.getWidth()).orElse(BigDecimal.ZERO);
-
-        // 2. 计算半长半宽
-        BigDecimal halfLength = length.divide(BigDecimal.valueOf(2), 10, RoundingMode.HALF_UP);
-        BigDecimal halfWidth = width.divide(BigDecimal.valueOf(2), 10, RoundingMode.HALF_UP);
-
-        // 3. 设置默认值
-        setIfNull(request::getXxStart, () -> halfLength, request::setXxStart);
-        setIfNull(request::getXxEnd, () -> halfLength, request::setXxEnd);
-        setIfNull(request::getYyStart, () -> halfWidth, request::setYyStart);
-        setIfNull(request::getYyEnd, () -> halfWidth, request::setYyEnd);
-
-
-        Boolean flag = devInfoService.updateDevice(request.getClientId(), request);
+    public Boolean updateDevice(UpdateDeviceParams params) {
+        //1.校验设备是否存在
         DevInfo devInfo = devInfoService.getOne(
                 Wrappers.<DevInfo>lambdaQuery()
-                        .eq(DevInfo::getClientId, request.getClientId()));
+                        .eq(DevInfo::getClientId, params.getClientId()));
+        if (Objects.isNull(devInfo)){
+            throw new BizException(ErrorEnum.DEVICE_IS_NOT_EXIST.getErrorCode(), ErrorEnum.DEVICE_IS_NOT_EXIST.getErrorMessage());
+        }
+
 
-        //检查parts.length >= 2确保数组有足够元素,提供默认值"2.0"
-        String result = Optional.ofNullable(devInfo.getSoftware())
-                .filter(s -> s.contains("."))
-                .map(s -> s.split("\\."))
-                .filter(parts -> parts.length >= 2)
-                .map(parts -> parts[0] + "." + parts[1])
-                .orElse("2.0");
+        //2..更新数据
+        devInfo.setDevName(params.getDevName());
+        devInfo.setHeight(params.getHeight());
+        devInfo.setWifiName(params.getWifiName());
+        devInfo.setWifiPassword(params.getWifiPassword());
+        devInfo.setNorthAngle(params.getNorthAngle());
+        devInfo.setMountPlain(params.getMountPlain());
+        devInfo.setInstallPosition(params.getInstallPosition());
+        devInfo.setXxStart(params.getXxStart());
+        devInfo.setXxEnd(params.getXxEnd());
+        devInfo.setYyStart(params.getYyStart());
+        devInfo.setYyEnd(params.getYyEnd());
+        devInfo.setZzStart(params.getZzStart());
+        devInfo.setZzEnd(params.getZzEnd());
+        devInfo.setLength(params.getXxEnd().subtract(params.getXxStart()));
+        devInfo.setWidth(params.getYyEnd().subtract(params.getYyStart()));
 
-        //todo mqttHandler.handleDeviceUpdateMessage(result, request);
-        return flag;
+        boolean updated = devInfoService.updateById(devInfo);
+        return  updated;
     }
 
 
@@ -477,35 +468,105 @@ public class DeviceGatewayImpl implements DeviceGateway {
     }
 
     @Override
-    public RoomDto readRoom(Long devId) {
+    public RoomDTO readRoom(Long devId) {
 
         DevRoom devRoom = devRoomService.queryByDevId(devId);
         if (devRoom == null) {
             throw new BizException(ErrorEnum.ROOM_IS_NOT_EXIST.getErrorCode(), ErrorEnum.ROOM_IS_NOT_EXIST.getErrorMessage());
         }
 
-        RoomDto dto = new RoomDto();
+        RoomDTO dto = new RoomDTO();
         dto.setRoomId(devRoom.getRoomId());
         dto.setDevId(devRoom.getDevId());
+
+        //处理furnitures
         if (StringUtils.hasText(devRoom.getFurnitures())) {
-            dto.setFurnitures(JSONArray.parseArray(devRoom.getFurnitures(), RegionInfo.class));
+            List<RegionDTO> regionDTOs = JSONArray.parseArray(devRoom.getFurnitures(), RegionDTO.class);
+            dto.setFurnitures(regionDTOs);
         }
+        //处理subRegions
         if (StringUtils.hasText(devRoom.getSubRegions())) {
-            dto.setSubRegions(JSONArray.parseArray(devRoom.getSubRegions(), RegionInfo.class));
-        }
+            List<SubRegionDTO> subRegionDTOs = JSONArray.parseArray(devRoom.getSubRegions(), SubRegionDTO.class);
+            dto.setSubRegions(subRegionDTOs);
+            }
         return dto;
     }
 
     @Override
-    public Boolean saveRoom(RoomDto roomDto) {
+    public Boolean saveRoom(RoomParam param) {
+
+        //查询设备信息
+        DevInfo devInfo = devInfoService.getById(param.getDevId());
 
         // 更新dev_room表
-        devRoomService.saveOrUpdate(roomDto);
+        devRoomService.saveOrUpdate(param);
+
+        //发送家具信息到算法
+        String topic = String.format(TopicConstants.TOPIC_DAS_SET_FURNITURE_PARAM, devInfo.getClientId());
+        JSONObject msg = new JSONObject();
+        msg.put("dev_id", devInfo.getClientId());
+        if (mqttClient != null) {
+            try{
+            mqttClient.sendMessage(topic, msg.toJSONString());
+            log.info("Message sent successfully to topic: {}", topic); // 记录消息发送成功的日志
+            } catch (Exception e){
+                log.error("Failed to send message to topic: {}", topic, e);  // 记录发送失败的错误日志
+            }
+        } else {
+            log.warn("MQTT client is not available, message not sent to topic: {}", topic);  // 记录客户端不可用的警告日志
+        }
 
-        // todo  发送 屏蔽区域的数据到mqtt
-        if (CollectionUtils.isNotEmpty(roomDto.getSubRegions())) {
-            // todo 组装数据发送mqtt
+        //发送屏蔽子区域信息到算法
+        String subTopic = String.format(TopicConstants.TOPIC_DAS_SET_SUB_REGION_PARAM, devInfo.getClientId());
+        JSONObject subRegionMsg = new JSONObject();
+        msg.put("dev_id", devInfo.getClientId());
+        if (mqttClient != null) {
+            try{
+                mqttClient.sendMessage(subTopic, subRegionMsg.toJSONString());
+                log.info("Message sent successfully to topic: {}", subTopic); // 记录消息发送成功的日志
+            } catch (Exception e){
+                log.error("Failed to send message to topic: {}", subTopic, e);  // 记录发送失败的错误日志
+            }
+        } else {
+            log.warn("MQTT client is not available, message not sent to topic: {}", subTopic);  // 记录客户端不可用的警告日志
+        }
+
+        //发送子区域信息到设备
+        List<SubRegionInfo> subRegions = param.getSubRegions();
+        if (subRegions != null && !subRegions.isEmpty()) {
+            JSONArray extSubRegions = new JSONArray();
+            for (SubRegionInfo region : subRegions) {
+                JSONObject base = new JSONObject();
+                base.put("x_cm_start", region.getStartXx());
+                base.put("x_cm_stop", region.getStopXx());
+                base.put("y_cm_start", region.getStartYy());
+                base.put("y_cm_stop", region.getStopYy());
+                base.put("presence_enter_duration", region.getPresenceEnterDuration());
+                base.put("presence_exit_duration", region.getPresenceExitDuration());
+                base.put("track_presence", region.getTrackPresence());
+                base.put("exclude_falling", region.getExcludeFalling());
+
+                JSONObject regionJson = new JSONObject();
+                regionJson.put("base", base);
+                regionJson.put("z_cm_start", region.getStartZz());
+                regionJson.put("z_cm_stop", region.getStopZz());
+                regionJson.put("is_low_snr", region.getIsLowSnr());
+                regionJson.put("is_door", region.getIsDoor());
+
+                extSubRegions.add(regionJson);
+            }
+            JSONObject infoMsg = new JSONObject();
+            subRegionMsg.put("ext_sub_regions", extSubRegions);
+
+            String topicDev = String.format(TopicConstants.TOPIC_SET_DEVICE_PARAM, devInfo.getClientId());
+            try {
+                mqttClient.sendMessage(topicDev, infoMsg.toJSONString());
+                log.info("SubRegions message sent successfully to topic: {}", topicDev);
+            } catch (Exception e) {
+                log.error("Failed to send subRegions message to topic: {}", topicDev, e);
+            }
         }
+
         return null;
     }
 

+ 0 - 3
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/UserGatewayImpl.java

@@ -197,7 +197,6 @@ public class UserGatewayImpl implements UserGateway {
             // 当前 token session 独享信息
             SaSession saSession = StpUtil.getSession();
             saSession.set(UserConstants.SA_USER_PHONE, userInfo.getPhone());
-            log.info("当前登录用户手机号:{}", saSession.get(UserConstants.SA_USER_PHONE));
             saSession.set(UserConstants.SA_USER_ID, userInfo.getUserId());
             saSession.set(UserConstants.SA_USER_OPEN_ID, userInfo.getOpenid());
             saSession.set(UserConstants.SA_USER_UNION_ID, userInfo.getUnionId());
@@ -208,10 +207,8 @@ public class UserGatewayImpl implements UserGateway {
         //3.获取token信息+用户手机号
         SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
         UserTokenInfo result = CopyUtils.copy(tokenInfo, UserTokenInfo.class);
-        log.info("返回的用户手机号: {}", userInfo.getPhone());
         result.setPhone(userInfo.getPhone());
         result.setUserId(userInfo.getUserId());
-
         return result;
     }
 

+ 5 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/DevInfo.java

@@ -188,6 +188,11 @@ public class DevInfo extends BasePO {
     private Integer statusLight;
 
     /**
+     * 激活日期
+     */
+    @TableField("active_time")
+    private LocalDateTime activeTime;
+    /**
      * 设备信息常量类
      */
     public static class Constants {

+ 2 - 2
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/DevRoomService.java

@@ -1,12 +1,12 @@
 package com.hfln.portal.infrastructure.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.hfln.portal.common.dto.data.room.RoomDto;
+import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.infrastructure.po.DevRoom;
 
 public interface DevRoomService extends IService<DevRoom> {
 
     DevRoom queryByDevId(Long devId);
 
-    void saveOrUpdate(RoomDto roomDto);
+    void saveOrUpdate(RoomParam param);
 }

+ 13 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevInfoServiceImpl.java

@@ -2,6 +2,7 @@ package com.hfln.portal.infrastructure.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hfln.portal.common.request.device.DeviceBandingParams;
@@ -30,6 +31,7 @@ public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> impl
     @Autowired
     private GroupDevMapMapper groupDevMapMapper;
 
+
     @Override
     public List<DevInfo> queryDeviceList(Long userId, String keyWord, Integer status, List<Long> sharedDevIds) {
         // 参数校验
@@ -88,12 +90,19 @@ public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> impl
             throw new IllegalArgumentException("设备标识不能为空");
         }
 
+        //获取数据库中已有的设备信息
+        DevInfo devInfo = this.getOne(
+                Wrappers.<DevInfo> lambdaQuery()
+                .eq(DevInfo::getClientId, request.getClientId()));
+
         // 构建更新条件
         UpdateWrapperBuilder<DevInfo> builder = UpdateWrapperBuilder.<DevInfo>create()
                 .setIfNotNull(DevInfo::getClientId, request.getClientId())
                 .setIfNotNull(DevInfo::getUserId, request.getUserId())
                 .setIfNotBlank(DevInfo::getDevName, request.getDevName())
+                //监测监测X长度: xxEnd-xxStart
                 .setIfNotNull(DevInfo::getLength, (request.getXxEnd().subtract(request.getXxStart())))
+                //监测监测Y长度: yyEnd-yyStart
                 .setIfNotNull(DevInfo::getWidth, (request.getYyEnd().subtract(request.getYyStart())))
                 .setIfNotNull(DevInfo::getHeight, request.getHeight())
                 .setIfNotNull(DevInfo::getWifiName, request.getWifiName())
@@ -110,6 +119,10 @@ public class DevInfoServiceImpl extends ServiceImpl<DevInfoMapper, DevInfo> impl
                 // 无条件更新的字段
                 .set(DevInfo::getUpdateTime, LocalDateTime.now())
                 .set(DevInfo::getOnline, 1);
+                //激活时间的插入
+        if (devInfo.getActiveTime() == null){
+            builder.set(DevInfo::getActiveTime, LocalDateTime.now());
+        }
 
         // 根据identifier类型决定使用哪个条件
         if (identifier instanceof Long) {

+ 9 - 9
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/DevRoomServiceImpl.java

@@ -3,7 +3,7 @@ package com.hfln.portal.infrastructure.service.impl;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.hfln.portal.common.dto.data.room.RoomDto;
+import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.domain.customer.util.UpdateWrapperBuilder;
 import com.hfln.portal.infrastructure.mapper.DevRoomMapper;
 import com.hfln.portal.infrastructure.po.BasePO;
@@ -27,28 +27,28 @@ public class DevRoomServiceImpl extends ServiceImpl<DevRoomMapper, DevRoom> impl
     }
 
     @Override
-    public void saveOrUpdate(RoomDto roomDto) {
+    public void saveOrUpdate(RoomParam param) {
 
         // 先查询 不存在,则保存后更新
-        DevRoom devRoom = this.queryByDevId(roomDto.getDevId());
+        DevRoom devRoom = this.queryByDevId(param.getDevId());
         if (devRoom == null) {
             DevRoom room = new DevRoom();
-            room.setDevId(roomDto.getDevId());
+            room.setDevId(param.getDevId());
             this.baseMapper.insert(room);
         }
 
         UpdateWrapperBuilder<DevRoom> builder = new UpdateWrapperBuilder<>();
-        if (CollectionUtils.isEmpty(roomDto.getFurnitures())) {
+        if (CollectionUtils.isEmpty(param.getFurnitures())) {
             builder.set(DevRoom::getFurnitures, null);
         } else {
-            builder.set(DevRoom::getFurnitures, JSON.toJSONString(roomDto.getFurnitures()));
+            builder.set(DevRoom::getFurnitures, JSON.toJSONString(param.getFurnitures()));
         }
-        if (CollectionUtils.isEmpty(roomDto.getSubRegions())) {
+        if (CollectionUtils.isEmpty(param.getSubRegions())) {
             builder.set(DevRoom::getSubRegions, null);
         } else {
-            builder.set(DevRoom::getSubRegions, JSON.toJSONString(roomDto.getSubRegions()));
+            builder.set(DevRoom::getSubRegions, JSON.toJSONString(param.getSubRegions()));
         }
-        builder.eq(DevRoom::getDevId, roomDto.getDevId());
+        builder.eq(DevRoom::getDevId, param.getDevId());
         builder.eq(DevRoom::getIsDeleted, BasePO.DeleteFlag.NOT_DELETED);
         this.baseMapper.update(null, builder.build());
     }