소스 검색

1、开发获取空间树接口;
2、开发网关-新增、修改、删除接口;

james 2 주 전
부모
커밋
ff61c6e525
19개의 변경된 파일18개의 추가작업 그리고 577개의 파일을 삭제
  1. 2 20
      service-ems/service-ems-biz/src/main/java/com/usky/ems/controller/web/EmsModelController.java
  2. 0 31
      service-ems/service-ems-biz/src/main/java/com/usky/ems/controller/web/EmsSpaceController.java
  3. 0 45
      service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpace.java
  4. 0 46
      service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpaceArea.java
  5. 0 67
      service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpaceBuilding.java
  6. 0 45
      service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpaceFloor.java
  7. 0 10
      service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceAreaMapper.java
  8. 0 10
      service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceBuildingMapper.java
  9. 0 10
      service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceFloorMapper.java
  10. 0 10
      service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceMapper.java
  11. 2 9
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/EmsModelService.java
  12. 0 31
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/EmsSpaceService.java
  13. 2 2
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsGatewayQueryServiceImpl.java
  14. 7 56
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsModelServiceImpl.java
  15. 0 136
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsSpaceServiceImpl.java
  16. 1 1
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsGatewayDetailResponse.java
  17. 1 1
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsGatewayListItem.java
  18. 3 3
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsModelSaveRequest.java
  19. 0 44
      service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsSpaceForestNodeVO.java

+ 2 - 20
service-ems/service-ems-biz/src/main/java/com/usky/ems/controller/web/EmsModelController.java

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.*;
 import java.util.List;
 
 /**
- * 能源能耗 - 模型/结构模块 API(项目层级树、能源类型、建筑/区域/楼层/网关/通道/设备/属性点位 CRUD)
+ * 能源能耗 - 模型/结构模块 API(项目层级树、能源类型、建筑/区域/网关/通道/设备/属性点位 CRUD)
  * 基础路径前缀:/model(网关再加 /prod-api/service-ems)
  */
 @RestController
@@ -20,7 +20,7 @@ public class EmsModelController {
     private EmsModelService emsModelService;
 
     /**
-     * 获取项目层级树(建筑、区域、楼层、网关)
+     * 获取项目层级树(建筑、区域、网关)
      */
     @GetMapping("/structure/tree")
     public ApiResult<EmsStructureTreeNode> getStructureTree(
@@ -82,24 +82,6 @@ public class EmsModelController {
         return ApiResult.success();
     }
 
-    @PostMapping("/floor")
-    public ApiResult<EmsIdResponse> createFloor(@RequestBody EmsModelSaveRequest request) {
-        Long id = emsModelService.createFloor(request);
-        return ApiResult.success(new EmsIdResponse(id));
-    }
-
-    @PutMapping("/floor/{id}")
-    public ApiResult<Void> updateFloor(@PathVariable Long id, @RequestBody EmsModelSaveRequest request) {
-        emsModelService.updateFloor(id, request);
-        return ApiResult.success();
-    }
-
-    @DeleteMapping("/floor/{id}")
-    public ApiResult<Void> deleteFloor(@PathVariable Long id) {
-        emsModelService.deleteFloor(id);
-        return ApiResult.success();
-    }
-
     @PostMapping("/gateway")
     public ApiResult<EmsIdResponse> createGateway(@RequestBody EmsModelSaveRequest request) {
         String id = emsModelService.createGateway(request);

+ 0 - 31
service-ems/service-ems-biz/src/main/java/com/usky/ems/controller/web/EmsSpaceController.java

@@ -1,31 +0,0 @@
-package com.usky.ems.controller.web;
-
-import com.usky.common.core.bean.ApiResult;
-import com.usky.ems.service.EmsSpaceService;
-import com.usky.ems.service.vo.EmsSpaceForestNodeVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 空间树接口
- *
- * GET /space/tree  获取空间树
- */
-@RestController
-@RequestMapping("/space")
-public class EmsSpaceController {
-
-    @Autowired
-    private EmsSpaceService emsSpaceService;
-
-    /**
-     * 获取空间树(根据 leo.ems_space 构建)
-     */
-    @GetMapping("/tree")
-    public ApiResult<EmsSpaceForestNodeVO> tree() {
-        return ApiResult.success(emsSpaceService.tree());
-    }
-}
-

+ 0 - 45
service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpace.java

@@ -1,45 +0,0 @@
-package com.usky.ems.domain;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * 空间(leo.ems_space)
- * 空间类型:1项目 2区域 3建筑 4楼层 5房间
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ems_space")
-public class EmsSpace implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    private String name;
-    @TableField("parent_id")
-    private Long parentId;
-    private Integer type;
-    @TableField("root_id")
-    private Long rootId;
-    private String path;
-    @TableField("path_name")
-    private String pathName;
-    private Integer deep;
-    @TableField("updated_by")
-    private Long updatedBy;
-    @TableField("update_time")
-    private LocalDateTime updateTime;
-    @TableField("created_by")
-    private Long createdBy;
-    @TableField("create_time")
-    private LocalDateTime createTime;
-}

+ 0 - 46
service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpaceArea.java

@@ -1,46 +0,0 @@
-package com.usky.ems.domain;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 区域(leo.ems_space_area)
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ems_space_area")
-public class EmsSpaceArea implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @TableField("space_id")
-    private Long spaceId;
-    private String name;
-    private Integer type;
-    private BigDecimal area;
-    @TableField("common_area")
-    private BigDecimal commonArea;
-    @TableField("air_conditioned_area")
-    private BigDecimal airConditionedArea;
-    @TableField("resident_population")
-    private Integer residentPopulation;
-    @TableField("updated_by")
-    private Long updatedBy;
-    @TableField("update_time")
-    private LocalDateTime updateTime;
-    @TableField("created_by")
-    private Long createdBy;
-    @TableField("create_time")
-    private LocalDateTime createTime;
-}

+ 0 - 67
service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpaceBuilding.java

@@ -1,67 +0,0 @@
-package com.usky.ems.domain;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 建筑(leo.ems_space_building)
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ems_space_building")
-public class EmsSpaceBuilding implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @TableField("space_id")
-    private Long spaceId;
-    private String name;
-    private BigDecimal area;
-    @TableField("common_area")
-    private BigDecimal commonArea;
-    @TableField("air_conditioned_area")
-    private BigDecimal airConditionedArea;
-    @TableField("resident_population")
-    private Integer residentPopulation;
-    @TableField("province_code")
-    private String provinceCode;
-    @TableField("province_name")
-    private String provinceName;
-    @TableField("city_code")
-    private String cityCode;
-    @TableField("city_name")
-    private String cityName;
-    @TableField("district_code")
-    private String districtCode;
-    @TableField("district_name")
-    private String districtName;
-    private String location;
-    private String address;
-    private Integer floor;
-    private BigDecimal height;
-    @TableField("type_id")
-    private Integer typeId;
-    @TableField("type_name")
-    private String typeName;
-    private String image;
-    private String introduction;
-    @TableField("updated_by")
-    private Long updatedBy;
-    @TableField("update_time")
-    private LocalDateTime updateTime;
-    @TableField("created_by")
-    private Long createdBy;
-    @TableField("create_time")
-    private LocalDateTime createTime;
-}

+ 0 - 45
service-ems/service-ems-biz/src/main/java/com/usky/ems/domain/EmsSpaceFloor.java

@@ -1,45 +0,0 @@
-package com.usky.ems.domain;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 楼层(leo.ems_space_floor)
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@TableName("ems_space_floor")
-public class EmsSpaceFloor implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @TableField("space_id")
-    private Long spaceId;
-    private String name;
-    private BigDecimal area;
-    @TableField("common_area")
-    private BigDecimal commonArea;
-    @TableField("air_conditioned_area")
-    private BigDecimal airConditionedArea;
-    @TableField("resident_population")
-    private Integer residentPopulation;
-    @TableField("updated_by")
-    private Long updatedBy;
-    @TableField("update_time")
-    private LocalDateTime updateTime;
-    @TableField("created_by")
-    private Long createdBy;
-    @TableField("create_time")
-    private LocalDateTime createTime;
-}

+ 0 - 10
service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceAreaMapper.java

@@ -1,10 +0,0 @@
-package com.usky.ems.mapper;
-
-import com.usky.common.mybatis.core.CrudMapper;
-import com.usky.ems.domain.EmsSpaceArea;
-
-/**
- * 区域 Mapper(leo.ems_space_area)
- */
-public interface EmsSpaceAreaMapper extends CrudMapper<EmsSpaceArea> {
-}

+ 0 - 10
service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceBuildingMapper.java

@@ -1,10 +0,0 @@
-package com.usky.ems.mapper;
-
-import com.usky.common.mybatis.core.CrudMapper;
-import com.usky.ems.domain.EmsSpaceBuilding;
-
-/**
- * 建筑 Mapper(leo.ems_space_building)
- */
-public interface EmsSpaceBuildingMapper extends CrudMapper<EmsSpaceBuilding> {
-}

+ 0 - 10
service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceFloorMapper.java

@@ -1,10 +0,0 @@
-package com.usky.ems.mapper;
-
-import com.usky.common.mybatis.core.CrudMapper;
-import com.usky.ems.domain.EmsSpaceFloor;
-
-/**
- * 楼层 Mapper(leo.ems_space_floor)
- */
-public interface EmsSpaceFloorMapper extends CrudMapper<EmsSpaceFloor> {
-}

+ 0 - 10
service-ems/service-ems-biz/src/main/java/com/usky/ems/mapper/EmsSpaceMapper.java

@@ -1,10 +0,0 @@
-package com.usky.ems.mapper;
-
-import com.usky.common.mybatis.core.CrudMapper;
-import com.usky.ems.domain.EmsSpace;
-
-/**
- * 空间 Mapper(leo.ems_space)
- */
-public interface EmsSpaceMapper extends CrudMapper<EmsSpace> {
-}

+ 2 - 9
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/EmsModelService.java

@@ -10,12 +10,12 @@ import com.usky.ems.service.vo.EnergyTypeWrapperProductVO;
 import java.util.List;
 
 /**
- * 基础建模服务(model:结构树、能源类型、建筑/区域/楼层/网关/通道/设备/属性点位)
+ * 基础建模服务(model:结构树、能源类型、建筑/区域/网关/通道/设备/属性点位)
  */
 public interface EmsModelService {
 
     /**
-     * 获取项目层级树(建筑、区域、楼层、网关)
+     * 获取项目层级树(建筑、区域、网关)
      */
     EmsStructureTreeNode getStructureTree(Long projectId, Boolean includeGateway);
 
@@ -44,13 +44,6 @@ public interface EmsModelService {
     /** 区域:删除 */
     void deleteRegion(Long id);
 
-    /** 楼层:新增 */
-    Long createFloor(EmsModelSaveRequest request);
-    /** 楼层:编辑 */
-    void updateFloor(Long id, EmsModelSaveRequest request);
-    /** 楼层:删除 */
-    void deleteFloor(Long id);
-
     /** 网关:新增 */
     String createGateway(EmsModelSaveRequest request);
     /** 网关:编辑 */

+ 0 - 31
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/EmsSpaceService.java

@@ -1,31 +0,0 @@
-package com.usky.ems.service;
-
-import com.usky.common.mybatis.core.CrudService;
-import com.usky.ems.domain.EmsSpace;
-import com.usky.ems.service.vo.EmsSpaceForestNodeVO;
-import java.util.List;
-
-/**
- * 空间服务(leo.ems_space)
- */
-public interface EmsSpaceService extends CrudService<EmsSpace> {
-
-    /**
-     * 构建空间树
-     *
-     * @return 根节点(如存在多个根,则返回一个虚拟根节点)
-     */
-    EmsSpaceForestNodeVO tree();
-
-    /**
-     * 获取当前用户在指定空间下有权限访问的空间ID列表
-     * 目前简单返回传入的 spaceId 本身,后续可根据实际权限模型扩展
-     */
-    List<Long> getAuthorizedSpaceIds(Long spaceId);
-
-    /**
-     * 递归获取某空间节点下的所有子节点(不包含自身)
-     */
-    List<EmsSpace> recursiveAllChildrenNode(Long spaceId);
-}
-

+ 2 - 2
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsGatewayQueryServiceImpl.java

@@ -63,7 +63,7 @@ public class EmsGatewayQueryServiceImpl implements EmsGatewayQueryService {
         if (g.getSpaceId() != null) {
             com.usky.ems.domain.EmsSpace space = emsSpaceMapper.selectById(g.getSpaceId());
             if (space != null) {
-                resp.setFloorName(space.getName());
+                resp.setSpaceName(space.getName());
             }
         }
         return resp;
@@ -80,7 +80,7 @@ public class EmsGatewayQueryServiceImpl implements EmsGatewayQueryService {
         item.setUpdateTime(g.getUpdateTime());
         if (g.getSpaceId() != null) {
             com.usky.ems.domain.EmsSpace space = emsSpaceMapper.selectById(g.getSpaceId());
-            if (space != null) item.setFloorName(space.getName());
+            if (space != null) item.setSpaceName(space.getName());
         }
         return item;
     }

+ 7 - 56
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsModelServiceImpl.java

@@ -22,7 +22,7 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
- * 基础建模服务实现(结构树、能源类型、建筑/区域/楼层/网关/通道/设备/属性点位 CRUD)
+ * 基础建模服务实现(结构树、能源类型、建筑/区域/网关/通道/设备/属性点位 CRUD)
  */
 @Service
 public class EmsModelServiceImpl implements EmsModelService {
@@ -36,8 +36,6 @@ public class EmsModelServiceImpl implements EmsModelService {
     @Autowired
     private EmsSpaceAreaMapper emsSpaceAreaMapper;
     @Autowired
-    private EmsSpaceFloorMapper emsSpaceFloorMapper;
-    @Autowired
     private EmsGatewayMapper emsGatewayMapper;
     @Autowired
     private EmsChannelMapper emsChannelMapper;
@@ -51,8 +49,6 @@ public class EmsModelServiceImpl implements EmsModelService {
     private static final int SPACE_TYPE_PROJECT = 1;
     private static final int SPACE_TYPE_REGION = 2;
     private static final int SPACE_TYPE_BUILDING = 3;
-    private static final int SPACE_TYPE_FLOOR = 4;
-    private static final int SPACE_TYPE_ROOM = 5;
 
     private EmsProject firstProject() {
         List<EmsProject> list = emsProjectMapper.selectList(null);
@@ -89,15 +85,12 @@ public class EmsModelServiceImpl implements EmsModelService {
                 node.setType("region");
                 EmsSpaceArea a = emsSpaceAreaMapper.selectOne(new LambdaQueryWrapper<EmsSpaceArea>().eq(EmsSpaceArea::getSpaceId, s.getId()));
                 if (a != null) node.setName(a.getName());
-            } else if (s.getType() == SPACE_TYPE_FLOOR) {
-                node.setType("floor");
-                EmsSpaceFloor f = emsSpaceFloorMapper.selectOne(new LambdaQueryWrapper<EmsSpaceFloor>().eq(EmsSpaceFloor::getSpaceId, s.getId()));
-                if (f != null) node.setName(f.getName());
             } else {
                 node.setType("space");
             }
             List<EmsStructureTreeNode> sub = buildSpaceChildren(s.getId(), includeGateway);
-            if (includeGateway && (s.getType() == SPACE_TYPE_FLOOR || s.getType() == SPACE_TYPE_ROOM)) {
+            // 网关挂在非「建筑」空间下(区域、历史遗留子空间等),不包含建筑节点本身
+            if (includeGateway && s.getType() != SPACE_TYPE_BUILDING) {
                 List<EmsGateway> gateways = emsGatewayMapper.selectList(new LambdaQueryWrapper<EmsGateway>().eq(EmsGateway::getSpaceId, s.getId()));
                 for (EmsGateway g : gateways) {
                     EmsStructureTreeNode gw = new EmsStructureTreeNode();
@@ -279,61 +272,19 @@ public class EmsModelServiceImpl implements EmsModelService {
         emsSpaceMapper.deleteById(id);
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Long createFloor(EmsModelSaveRequest request) {
-        Long regionId = request.getRegionId();
-        String name = request.getName();
-        EmsSpace space = new EmsSpace();
-        space.setName(name);
-        space.setParentId(regionId);
-        EmsSpace parent = emsSpaceMapper.selectById(regionId);
-        space.setRootId(parent != null ? parent.getRootId() : regionId);
-        space.setType(SPACE_TYPE_FLOOR);
-        emsSpaceMapper.insert(space);
-        EmsSpaceFloor floor = new EmsSpaceFloor();
-        floor.setSpaceId(space.getId());
-        floor.setName(name);
-        emsSpaceFloorMapper.insert(floor);
-        return space.getId();
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateFloor(Long id, EmsModelSaveRequest request) {
-        String name = request.getName();
-        EmsSpace space = emsSpaceMapper.selectById(id);
-        if (space != null && name != null) {
-            space.setName(name);
-            emsSpaceMapper.updateById(space);
-        }
-        EmsSpaceFloor f = emsSpaceFloorMapper.selectOne(new LambdaQueryWrapper<EmsSpaceFloor>().eq(EmsSpaceFloor::getSpaceId, id));
-        if (f != null && name != null) {
-            f.setName(name);
-            emsSpaceFloorMapper.updateById(f);
-        }
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteFloor(Long id) {
-        emsSpaceFloorMapper.delete(new LambdaQueryWrapper<EmsSpaceFloor>().eq(EmsSpaceFloor::getSpaceId, id));
-        emsSpaceMapper.deleteById(id);
-    }
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String createGateway(EmsModelSaveRequest request) {
-        Long floorId = request.getFloorId();
+        Long spaceId = request.getSpaceId();
         String name = request.getName();
         String gwId = "GW" + System.currentTimeMillis();
         if (gwId.length() > 13) gwId = gwId.substring(0, 13);
         EmsGateway g = new EmsGateway();
         g.setId(gwId);
         g.setName(name);
-        g.setSpaceId(floorId);
+        g.setSpaceId(spaceId);
         g.setProjectId(0L);
-        EmsSpace space = floorId != null ? emsSpaceMapper.selectById(floorId) : null;
+        EmsSpace space = spaceId != null ? emsSpaceMapper.selectById(spaceId) : null;
         if (space != null) {
             EmsProject p = firstProject();
             if (p != null) g.setProjectId(p.getId());
@@ -352,7 +303,7 @@ public class EmsModelServiceImpl implements EmsModelService {
         EmsGateway g = emsGatewayMapper.selectById(id);
         if (g == null) return;
         if (request.getName() != null) g.setName(request.getName());
-        if (request.getFloorId() != null) g.setSpaceId(request.getFloorId());
+        if (request.getSpaceId() != null) g.setSpaceId(request.getSpaceId());
         emsGatewayMapper.updateById(g);
     }
 

+ 0 - 136
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsSpaceServiceImpl.java

@@ -1,136 +0,0 @@
-package com.usky.ems.service.impl;
-
-import com.usky.common.mybatis.core.AbstractCrudService;
-import com.usky.ems.domain.EmsSpace;
-import com.usky.ems.mapper.EmsSpaceMapper;
-import com.usky.ems.service.EmsSpaceService;
-import com.usky.ems.service.vo.EmsSpaceForestNodeVO;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 空间服务实现(leo.ems_space)
- */
-@Service
-public class EmsSpaceServiceImpl extends AbstractCrudService<EmsSpaceMapper, EmsSpace> implements EmsSpaceService {
-
-    @Override
-    public EmsSpaceForestNodeVO tree() {
-        List<EmsSpace> allSpaces = this.list();
-        if (allSpaces == null || allSpaces.isEmpty()) {
-            return null;
-        }
-
-        // 1. 转为 VO 列表
-        List<EmsSpaceForestNodeVO> allNodes = allSpaces.stream()
-                .map(this::toNode)
-                .collect(Collectors.toList());
-
-        // 2. 按名称排序,尽量保持稳定的展示顺序
-        allNodes.sort(Comparator.comparing(
-                EmsSpaceForestNodeVO::getName,
-                Comparator.nullsFirst(String::compareToIgnoreCase)
-        ));
-
-        // 3. 建立 id -> 节点 映射,方便父子关联
-        Map<Long, EmsSpaceForestNodeVO> idNodeMap = new HashMap<>();
-        for (EmsSpaceForestNodeVO node : allNodes) {
-            if (node.getId() != null) {
-                idNodeMap.put(node.getId(), node);
-            }
-        }
-
-        // 4. 组装父子关系,并收集根节点
-        List<EmsSpaceForestNodeVO> roots = new ArrayList<>();
-        for (EmsSpaceForestNodeVO node : allNodes) {
-            Long parentId = node.getParentId();
-            if (parentId != null && parentId != 0L) {
-                EmsSpaceForestNodeVO parent = idNodeMap.get(parentId);
-                if (parent != null) {
-                    node.setParentSpaceName(parent.getName());
-                    parent.getChildren().add(node);
-                } else {
-                    // 找不到父节点时,视为根节点,避免数据丢失
-                    roots.add(node);
-                }
-            } else {
-                // parentId 为空或为 0,视为根节点
-                roots.add(node);
-            }
-        }
-
-        if (roots.isEmpty()) {
-            return null;
-        }
-
-        // 5. 若只有一个根节点,直接返回;否则构造一个虚拟根节点
-        List<EmsSpaceForestNodeVO> distinctRoots = roots.stream()
-                .filter(Objects::nonNull)
-                .distinct()
-                .collect(Collectors.toList());
-
-        if (distinctRoots.size() == 1) {
-            return distinctRoots.get(0);
-        }
-
-        EmsSpaceForestNodeVO virtualRoot = new EmsSpaceForestNodeVO();
-        virtualRoot.setId(0L);
-        virtualRoot.setName("ROOT");
-        virtualRoot.setChildren(distinctRoots);
-        return virtualRoot;
-    }
-
-    @Override
-    public List<Long> getAuthorizedSpaceIds(Long spaceId) {
-        if (spaceId == null) {
-            return Collections.emptyList();
-        }
-        return Collections.singletonList(spaceId);
-    }
-
-    @Override
-    public List<EmsSpace> recursiveAllChildrenNode(Long spaceId) {
-        if (spaceId == null) {
-            return Collections.emptyList();
-        }
-        List<EmsSpace> result = new ArrayList<>();
-        collectChildren(spaceId, result);
-        return result;
-    }
-
-    private void collectChildren(Long parentId, List<EmsSpace> out) {
-        List<EmsSpace> children = this.list(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<EmsSpace>()
-                .eq(EmsSpace::getParentId, parentId));
-        if (children == null || children.isEmpty()) {
-            return;
-        }
-        out.addAll(children);
-        for (EmsSpace child : children) {
-            if (child != null && child.getId() != null) {
-                collectChildren(child.getId(), out);
-            }
-        }
-    }
-
-    private EmsSpaceForestNodeVO toNode(EmsSpace space) {
-        EmsSpaceForestNodeVO vo = new EmsSpaceForestNodeVO();
-        vo.setId(space.getId());
-        vo.setName(space.getName());
-        vo.setParentId(space.getParentId());
-        vo.setType(space.getType());
-        vo.setRootId(space.getRootId());
-        vo.setPath(space.getPath());
-        vo.setPathName(space.getPathName());
-        vo.setDeep(space.getDeep());
-        return vo;
-    }
-}
-

+ 1 - 1
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsGatewayDetailResponse.java

@@ -13,7 +13,7 @@ public class EmsGatewayDetailResponse {
     private String id;
     private String name;
     private Long spaceId;
-    private String floorName;
+    private String spaceName;
     private String regionName;
     private String buildingName;
     private String installLocation;

+ 1 - 1
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsGatewayListItem.java

@@ -13,7 +13,7 @@ public class EmsGatewayListItem {
     private String id;
     private String name;
     private Long spaceId;
-    private String floorName;
+    private String spaceName;
     private String installLocation;
     private Integer communicationStatus;
     private LocalDateTime onlineTime;

+ 3 - 3
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsModelSaveRequest.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import java.math.BigDecimal;
 
 /**
- * 基础建模 - 建筑/区域/楼层/网关/通道/设备/属性点位 新增与编辑请求(通用字段)
+ * 基础建模 - 建筑/区域/网关/通道/设备/属性点位 新增与编辑请求(通用字段)
  * 各接口按需使用部分字段
  */
 @Data
@@ -14,7 +14,8 @@ public class EmsModelSaveRequest {
     private Long projectId;
     private Long buildingId;
     private Long regionId;
-    private Long floorId;
+    /** 网关绑定的空间 ID(一般为区域) */
+    private Long spaceId;
 
     private Long channelId;
     // 通道类型ID(1:Serial Port,2:TCP)
@@ -34,7 +35,6 @@ public class EmsModelSaveRequest {
     private String name;
     private String code;
     private BigDecimal area;
-    private Integer floorNumber;
     private Integer sortOrder;
     private String installLocation;
     private String configJson;

+ 0 - 44
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/vo/EmsSpaceForestNodeVO.java

@@ -1,44 +0,0 @@
-package com.usky.ems.service.vo;
-
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 空间树节点(对应 leo.ems_space)
- */
-@Data
-public class EmsSpaceForestNodeVO {
-
-    /** 节点 ID(ems_space.id) */
-    private Long id;
-
-    /** 名称(ems_space.name 或扩展名称) */
-    private String name;
-
-    /** 父节点 ID(ems_space.parent_id) */
-    private Long parentId;
-
-    /** 空间类型:1项目 2区域 3建筑 4楼层 5房间(ems_space.type) */
-    private Integer type;
-
-    /** 根节点 ID(ems_space.root_id) */
-    private Long rootId;
-
-    /** 节点路径(ems_space.path) */
-    private String path;
-
-    /** 节点路径名称(ems_space.path_name) */
-    private String pathName;
-
-    /** 深度(ems_space.deep) */
-    private Integer deep;
-
-    /** 父空间名称(便于前端展示) */
-    private String parentSpaceName;
-
-    /** 子节点列表 */
-    private List<EmsSpaceForestNodeVO> children = new ArrayList<>();
-}
-