Browse Source

1、添加区域、楼栋、楼层、房间信息管理树形接口;

2、添加区域、楼栋、楼层、房间跟采集参数关联相关接口;
dev
mh 2 months ago
parent
commit
ebeb23734e
  1. 94
      mh-admin/src/main/java/com/mh/web/controller/space/CpmSpaceRelationController.java
  2. 43
      mh-admin/src/main/java/com/mh/web/controller/space/SpaceController.java
  3. 98
      mh-common/src/main/java/com/mh/common/core/domain/SpaceTreeSelect.java
  4. 85
      mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java
  5. 41
      mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java
  6. 16
      mh-system/src/main/java/com/mh/system/mapper/space/CpmSpaceRelationMapper.java
  7. 31
      mh-system/src/main/java/com/mh/system/mapper/space/HouseInfoMapper.java
  8. 28
      mh-system/src/main/java/com/mh/system/service/space/ICpmSpaceRelationService.java
  9. 3
      mh-system/src/main/java/com/mh/system/service/space/IHouseInfoService.java
  10. 3
      mh-system/src/main/java/com/mh/system/service/space/impl/AreaInfoServiceImpl.java
  11. 2
      mh-system/src/main/java/com/mh/system/service/space/impl/BuildingInfoServiceImpl.java
  12. 78
      mh-system/src/main/java/com/mh/system/service/space/impl/CpmSpaceRelationServiceImpl.java
  13. 2
      mh-system/src/main/java/com/mh/system/service/space/impl/FloorInfoServiceImpl.java
  14. 70
      mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java
  15. 69
      sql/区域、楼栋、楼层、房间信息表.sql

94
mh-admin/src/main/java/com/mh/web/controller/space/CpmSpaceRelationController.java

@ -0,0 +1,94 @@
package com.mh.web.controller.space;
import com.mh.common.annotation.Log;
import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.entity.CpmSpaceRelation;
import com.mh.common.core.page.TableDataInfo;
import com.mh.common.enums.BusinessType;
import com.mh.system.service.space.ICpmSpaceRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 采集参数和区域楼栋楼层房间关联控制类
* @date 2025-02-20 15:13:10
*/
@RestController
@RequestMapping("/space/relation")
public class CpmSpaceRelationController extends BaseController {
private final ICpmSpaceRelationService cpmSpaceRelationService;
@Autowired
public CpmSpaceRelationController(ICpmSpaceRelationService cpmSpaceRelationService) {
this.cpmSpaceRelationService = cpmSpaceRelationService;
}
/**
* 获取采集参数区域等关联管理列表内容数据
*/
@PreAuthorize("@ss.hasPermi('system:cpmSpaceRelation:list')")
@GetMapping("/list")
public TableDataInfo list(CpmSpaceRelation cpmSpaceRelation)
{
startPage();
List<CollectionParamsManage> list = cpmSpaceRelationService.selectCpmSpaceRelationList(cpmSpaceRelation);
return getDataTable(list);
}
/**
* 根据区域管理id获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:cpmSpaceRelation:query')")
@GetMapping(value = "/{cpmSpaceRelationId}")
public AjaxResult getInfo(@PathVariable String cpmSpaceRelationId)
{
return success(cpmSpaceRelationService.selectCpmSpaceRelationById(cpmSpaceRelationId));
}
/**
* 新增采集参数区域等关联管理
*/
@PreAuthorize("@ss.hasPermi('system:cpmSpaceRelation:add')")
@Log(title = "采集参数、区域等关联管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody CpmSpaceRelation CpmSpaceRelation)
{
CpmSpaceRelation.setCreateBy(getUsername());
return toAjax(cpmSpaceRelationService.insertCpmSpaceRelation(CpmSpaceRelation));
}
/**
* 修改采集参数区域等关联管理
*/
@PreAuthorize("@ss.hasPermi('system:cpmSpaceRelation:edit')")
@Log(title = "采集参数、区域等关联管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody CpmSpaceRelation CpmSpaceRelation)
{
CpmSpaceRelation.setUpdateBy(getUsername());
return toAjax(cpmSpaceRelationService.updateCpmSpaceRelation(CpmSpaceRelation));
}
/**
* 删除采集参数区域等关联管理
*/
@PreAuthorize("@ss.hasPermi('system:cpmSpaceRelation:remove')")
@Log(title = "采集参数、区域等关联管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{cpmSpaceRelationIds}")
public AjaxResult remove(@PathVariable String[] cpmSpaceRelationIds)
{
return toAjax(cpmSpaceRelationService.deleteCpmSpaceRelationByIds(cpmSpaceRelationIds));
}
}

43
mh-admin/src/main/java/com/mh/web/controller/space/SpaceController.java

@ -0,0 +1,43 @@
package com.mh.web.controller.space;
import com.mh.common.annotation.Log;
import com.mh.common.core.controller.BaseController;
import com.mh.common.core.domain.AjaxResult;
import com.mh.common.core.domain.entity.CpmSpaceRelation;
import com.mh.common.core.domain.entity.HouseInfo;
import com.mh.common.enums.BusinessType;
import com.mh.system.service.space.IHouseInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 空间区域管理
* @date 2025-02-20 08:34:51
*/
@RestController
@RequestMapping("/space")
public class SpaceController extends BaseController {
private final IHouseInfoService houseInfoService;
@Autowired
public SpaceController(IHouseInfoService houseInfoService) {
this.houseInfoService = houseInfoService;
}
@GetMapping("/tree")
public AjaxResult tree() {
return AjaxResult.success(houseInfoService.buildTree());
}
@Log(title = "采集参数和区域、楼栋、楼层、房间的关联表", businessType = BusinessType.INSERT)
@PostMapping("/relation")
public AjaxResult relation(@Validated @RequestBody CpmSpaceRelation cpmSpaceRelation) {
cpmSpaceRelation.setCreateBy(getUsername());
return AjaxResult.success();
}
}

98
mh-common/src/main/java/com/mh/common/core/domain/SpaceTreeSelect.java

@ -0,0 +1,98 @@
package com.mh.common.core.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.mh.common.constant.UserConstants;
import com.mh.common.core.domain.entity.SysDept;
import com.mh.common.core.domain.entity.SysMenu;
import com.mh.common.utils.StringUtils;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
/**
* Treeselect树结构实体类
*
* @author mh
*/
public class SpaceTreeSelect implements Serializable
{
private static final long serialVersionUID = 1L;
/** 节点ID */
private String id;
/** 节点名称 */
private String label;
/** 节点禁用 */
private boolean disabled = false;
/** 子节点 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<SpaceTreeSelect> children;
// 用于构建关系的临时字段(不序列化)
@JsonIgnore
private String parentId;
public SpaceTreeSelect()
{
}
public SpaceTreeSelect(String id, String houseName, boolean b, String floorId) {
this.id = id;
this.label = houseName;
this.disabled = b;
this.parentId = floorId;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getLabel()
{
return label;
}
public void setLabel(String label)
{
this.label = label;
}
public boolean isDisabled()
{
return disabled;
}
public void setDisabled(boolean disabled)
{
this.disabled = disabled;
}
public List<SpaceTreeSelect> getChildren()
{
return children;
}
public void setChildren(List<SpaceTreeSelect> children)
{
this.children = children;
}
}

85
mh-common/src/main/java/com/mh/common/core/domain/entity/CpmSpaceRelation.java

@ -0,0 +1,85 @@
package com.mh.common.core.domain.entity;
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 com.fasterxml.jackson.annotation.JsonInclude;
import com.mh.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.Map;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 采集参数和区域楼栋楼层房间的关联表
* @date 2025-02-20 14:44:35
*/
@Setter
@Getter
@TableName("cpm_space_relation")
public class CpmSpaceRelation extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 采集参数id
*/
private String cpmId;
/**
* 区域id
*/
private String areaId;
/**
* 楼栋id
*/
private String buildingId;
/**
* 楼层id
*/
private String floorId;
/**
* 房间id
*/
private String houseId;
/**
* 过滤掉BaseENtity的searchValueparamremark
*/
@TableField(exist = false)
private String remark;
@TableField(exist = false)
private String searchValue;
/** 请求参数 */
@TableField(exist = false)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map<String, Object> params;
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("cpmId", cpmId)
.append("areaId", areaId)
.append("buildingId", buildingId)
.append("floorId", floorId)
.append("houseId", houseId)
.append("remark", remark)
.append("searchValue", searchValue)
.append("params", params)
.toString();
}
}

41
mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java

@ -54,4 +54,45 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
@Select("select id from collection_params_manage where mt_code = #{registerAddr} and mt_type = #{mtType} limit 1 ")
String selectIdByMtCodeAndType(@Param("registerAddr") String registerAddr,
@Param("mtType") String mtType);
@Select("select " +
" cpm.* " +
"from " +
" collection_params_manage cpm " +
"join cpm_space_relation csr " +
"on " +
" cpm.id = csr.cpm_id " +
" and csr.house_id = #{houseId} ")
List<CollectionParamsManage> selectByHouseId(@Param("houseId") String houseId);
@Select("select " +
" cpm.* " +
"from " +
" collection_params_manage cpm " +
"join cpm_space_relation csr " +
"on " +
" cpm.id = csr.cpm_id " +
" and csr.floor_id = #{floorId} ")
List<CollectionParamsManage> selectByFloorId(@Param("floorId") String floorId);
@Select("select " +
" cpm.* " +
"from " +
" collection_params_manage cpm " +
"join cpm_space_relation csr " +
"on " +
" cpm.id = csr.cpm_id " +
" and csr.building_id = #{buildingId} ")
List<CollectionParamsManage> selectByBuildingId(@Param("buildingId") String buildingId);
@Select("select " +
" cpm.* " +
"from " +
" collection_params_manage cpm " +
"join cpm_space_relation csr " +
"on " +
" cpm.id = csr.cpm_id " +
" and csr.area_id = #{areaId} ")
List<CollectionParamsManage> selectByAreaId(@Param("areaId") String areaId);
}

16
mh-system/src/main/java/com/mh/system/mapper/space/CpmSpaceRelationMapper.java

@ -0,0 +1,16 @@
package com.mh.system.mapper.space;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.entity.CpmSpaceRelation;
import org.apache.ibatis.annotations.Mapper;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 参数区域关联表管理
* @date 2025-02-20 15:33:31
*/
@Mapper
public interface CpmSpaceRelationMapper extends BaseMapper<CpmSpaceRelation> {
}

31
mh-system/src/main/java/com/mh/system/mapper/space/HouseInfoMapper.java

@ -1,9 +1,12 @@
package com.mh.system.mapper.space;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mh.common.core.domain.entity.FloorInfo;
import com.mh.common.core.domain.entity.HouseInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* @author LJF
@ -14,4 +17,30 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface HouseInfoMapper extends BaseMapper<HouseInfo> {
@Select("select " +
" ai.area_name, " +
" bi.building_name , " +
" fi.floor_name , " +
" hi.area_id , " +
" hi.building_id , " +
" hi.floor_id , " +
" hi.id, " +
" hi.house_name, " +
" ai.order_num as ai_order_num, " +
" bi.order_num as bi_order_num, " +
" fi.order_num as fi_order_num, " +
" hi.order_num as hi_order_num " +
"from " +
" house_info hi " +
"join floor_info fi " +
"on " +
" hi.floor_id = fi.id " +
"join building_info bi " +
"on " +
" hi.building_id = bi.id " +
"join area_info ai " +
"on " +
" hi.area_id = ai.id")
List<Map<String, Object>> selectTree();
}

28
mh-system/src/main/java/com/mh/system/service/space/ICpmSpaceRelationService.java

@ -0,0 +1,28 @@
package com.mh.system.service.space;
import com.mh.common.core.domain.SpaceTreeSelect;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.entity.CpmSpaceRelation;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 区域楼栋楼层房间跟采集参数关联管理
* @date 2025-02-19 16:37:19
*/
public interface ICpmSpaceRelationService {
List<CollectionParamsManage> selectCpmSpaceRelationList(CpmSpaceRelation cpmSpaceRelation);
CpmSpaceRelation selectCpmSpaceRelationById(String cpmSpaceRelationId);
int insertCpmSpaceRelation(CpmSpaceRelation cpmSpaceRelation);
int updateCpmSpaceRelation(CpmSpaceRelation cpmSpaceRelation);
int deleteCpmSpaceRelationByIds(String[] buildingIds);
}

3
mh-system/src/main/java/com/mh/system/service/space/IHouseInfoService.java

@ -1,5 +1,6 @@
package com.mh.system.service.space;
import com.mh.common.core.domain.SpaceTreeSelect;
import com.mh.common.core.domain.entity.HouseInfo;
import java.util.List;
@ -23,4 +24,6 @@ public interface IHouseInfoService {
int deleteHouseInfoByIds(String[] buildingIds);
List<SpaceTreeSelect> buildTree();
}

3
mh-system/src/main/java/com/mh/system/service/space/impl/AreaInfoServiceImpl.java

@ -2,13 +2,13 @@ package com.mh.system.service.space.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.entity.AreaInfo;
import com.mh.common.core.domain.entity.DeviceLedger;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.space.AreaInfoMapper;
import com.mh.system.service.space.IAreaInfoService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -54,6 +54,7 @@ public class AreaInfoServiceImpl implements IAreaInfoService {
@Override
public int updateAreaInfo(AreaInfo areaInfo) {
areaInfo.setUpdateTime(new Date());
return areaInfoMapper.updateById(areaInfo);
}

2
mh-system/src/main/java/com/mh/system/service/space/impl/BuildingInfoServiceImpl.java

@ -9,6 +9,7 @@ import com.mh.system.service.space.IBuildingInfoService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -64,6 +65,7 @@ public class BuildingInfoServiceImpl implements IBuildingInfoService {
if (StringUtils.isEmpty(buildingInfo.getAreaId())) {
throw new RuntimeException("没有对应的区域id");
}
buildingInfo.setUpdateTime(new Date());
return buildingInfoMapper.updateById(buildingInfo);
}

78
mh-system/src/main/java/com/mh/system/service/space/impl/CpmSpaceRelationServiceImpl.java

@ -0,0 +1,78 @@
package com.mh.system.service.space.impl;
import com.mh.common.core.domain.entity.CollectionParamsManage;
import com.mh.common.core.domain.entity.CpmSpaceRelation;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.device.CollectionParamsManageMapper;
import com.mh.system.mapper.space.CpmSpaceRelationMapper;
import com.mh.system.service.space.ICpmSpaceRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 区域楼栋楼层房间跟采集参数关联管理
* @date 2025-02-19 16:37:19
*/
@Service
public class CpmSpaceRelationServiceImpl implements ICpmSpaceRelationService {
private final CpmSpaceRelationMapper cpmSpaceRelationMapper;
private final CollectionParamsManageMapper collectionParamsManageMapper;
@Autowired
public CpmSpaceRelationServiceImpl(CpmSpaceRelationMapper cpmSpaceRelationMapper, CollectionParamsManageMapper collectionParamsManageMapper) {
this.cpmSpaceRelationMapper = cpmSpaceRelationMapper;
this.collectionParamsManageMapper = collectionParamsManageMapper;
}
@Override
public List<CollectionParamsManage> selectCpmSpaceRelationList(CpmSpaceRelation cpmSpaceRelation) {
// 判断房间号id是否为空
if (cpmSpaceRelation == null) {
return List.of();
}
if (!StringUtils.isEmpty(cpmSpaceRelation.getHouseId())) {
return collectionParamsManageMapper.selectByHouseId(cpmSpaceRelation.getHouseId());
} else if (!StringUtils.isEmpty(cpmSpaceRelation.getFloorId() )) {
return collectionParamsManageMapper.selectByFloorId(cpmSpaceRelation.getFloorId());
} else if (!StringUtils.isEmpty(cpmSpaceRelation.getBuildingId() )) {
return collectionParamsManageMapper.selectByBuildingId(cpmSpaceRelation.getBuildingId());
} else if (!StringUtils.isEmpty(cpmSpaceRelation.getAreaId() )) {
return collectionParamsManageMapper.selectByAreaId(cpmSpaceRelation.getAreaId());
} else {
return List.of();
}
}
@Override
public CpmSpaceRelation selectCpmSpaceRelationById(String cpmSpaceRelationId) {
return cpmSpaceRelationMapper.selectById(cpmSpaceRelationId);
}
@Override
public int insertCpmSpaceRelation(CpmSpaceRelation cpmSpaceRelation) {
return cpmSpaceRelationMapper.insert(cpmSpaceRelation);
}
@Override
public int updateCpmSpaceRelation(CpmSpaceRelation cpmSpaceRelation) {
return cpmSpaceRelationMapper.updateById(cpmSpaceRelation);
}
@Override
public int deleteCpmSpaceRelationByIds(String[] buildingIds) {
if (buildingIds != null && buildingIds.length > 0) {
for (String buildingId : buildingIds) {
cpmSpaceRelationMapper.deleteById(buildingId);
}
return buildingIds.length;
}
return 0;
}
}

2
mh-system/src/main/java/com/mh/system/service/space/impl/FloorInfoServiceImpl.java

@ -8,6 +8,7 @@ import com.mh.system.service.space.IFloorInfoService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -73,6 +74,7 @@ public class FloorInfoServiceImpl implements IFloorInfoService {
if(StringUtils.isEmpty(floorInfo.getBuildingId())) {
throw new RuntimeException("没有对应的楼栋id");
}
floorInfo.setUpdateTime(new Date());
return floorInfoMapper.updateById(floorInfo);
}

70
mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java

@ -1,14 +1,25 @@
package com.mh.system.service.space.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mh.common.core.domain.SpaceTreeSelect;
import com.mh.common.core.domain.TreeSelect;
import com.mh.common.core.domain.entity.AreaInfo;
import com.mh.common.core.domain.entity.BuildingInfo;
import com.mh.common.core.domain.entity.FloorInfo;
import com.mh.common.core.domain.entity.HouseInfo;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.space.AreaInfoMapper;
import com.mh.system.mapper.space.BuildingInfoMapper;
import com.mh.system.mapper.space.FloorInfoMapper;
import com.mh.system.mapper.space.HouseInfoMapper;
import com.mh.system.service.space.IHouseInfoService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author LJF
@ -20,6 +31,15 @@ import java.util.List;
@Service
public class HouseInfoServiceImpl implements IHouseInfoService {
@Resource
private AreaInfoMapper areaInfoMapper;
@Resource
private BuildingInfoMapper buildingInfoMapper;
@Resource
private FloorInfoMapper floorInfoMapper;
@Resource
private HouseInfoMapper houseInfoMapper;
@ -96,4 +116,54 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
}
return 0;
}
@Override
public List<SpaceTreeSelect> buildTree() {
List<AreaInfo> areaInfos = areaInfoMapper.selectList(null);
if (areaInfos != null && !areaInfos.isEmpty()) {
List<BuildingInfo> buildingInfos = buildingInfoMapper.selectList(null);
List<FloorInfo> floorInfos = floorInfoMapper.selectList(null);
List<HouseInfo> houseInfos = houseInfoMapper.selectList(null);
return buildTree(areaInfos, buildingInfos, floorInfos, houseInfos);
}
return List.of();
}
public List<SpaceTreeSelect> buildTree(List<AreaInfo> areaInfos,
List<BuildingInfo> buildingInfos,
List<FloorInfo> floorInfos,
List<HouseInfo> houseInfos) {
// 房间 -> 楼层映射
Map<String, List<SpaceTreeSelect>> floorMap = houseInfos.stream()
.map(r -> new SpaceTreeSelect(r.getId(), r.getHouseName(), false, r.getFloorId()))
.collect(Collectors.groupingBy(SpaceTreeSelect::getParentId));
// 楼层 -> 楼栋映射
Map<String, List<SpaceTreeSelect>> buildingMap = floorInfos.stream()
.map(f -> {
SpaceTreeSelect node = new SpaceTreeSelect(f.getId(), f.getFloorName(), false, f.getBuildingId());
node.setChildren(floorMap.getOrDefault(f.getId(), Collections.emptyList()));
return node;
})
.collect(Collectors.groupingBy(SpaceTreeSelect::getParentId));
// 楼栋 -> 区域映射
Map<String, List<SpaceTreeSelect>> areaMap = buildingInfos.stream()
.map(b -> {
SpaceTreeSelect node = new SpaceTreeSelect(b.getId(), b.getBuildingName(), false, b.getAreaId());
node.setChildren(buildingMap.getOrDefault(b.getId(), Collections.emptyList()));
return node;
})
.collect(Collectors.groupingBy(SpaceTreeSelect::getParentId));
// 构建区域树
return areaInfos.stream()
.map(a -> {
SpaceTreeSelect node = new SpaceTreeSelect(a.getId(), a.getAreaName(), false, null);
node.setChildren(areaMap.getOrDefault(a.getId(), Collections.emptyList()));
return node;
})
.collect(Collectors.toList());
}
}

69
sql/区域/楼栋/楼层/房间信息表.sql → sql/区域、楼栋、楼层、房间信息表.sql

@ -7,8 +7,8 @@ create table area_info (
remark varchar(500),
create_by varchar(200),
update_by varchar(200),
created_time timestamp default current_timestamp,
updated_time timestamp default current_timestamp
create_time timestamp default current_timestamp,
update_time timestamp default current_timestamp
);
comment on table area_info is '区域信息表,用于存储系统中的所有区域数据';
comment on column area_info.id is '区域唯一标识符,使用uuid格式确保全局唯一性[ty-reference](2)';
@ -18,14 +18,14 @@ comment on column area_info.parent_id is '父级区域id,默认值为0表示
comment on column area_info.remark is '备注信息,允许存储长达500个字符的额外说明';
comment on column area_info.create_by is '创建者,记录创建该区域的用户信息';
comment on column area_info.update_by is '最后更新者,记录最近一次修改该区域的用户信息';
comment on column area_info.created_time is '创建时间,默认值为当前时间戳';
comment on column area_info.updated_time is '最后更新时间,默认值为当前时间戳';
comment on column area_info. create_time is '创建时间,默认值为当前时间戳';
comment on column area_info.update_time is '最后更新时间,默认值为当前时间戳';
create index idx_area_name on area_info (area_name);
create index idx_area_parent_id on area_info (parent_id);
create index idx_area_parent_order on area_info (parent_id, order_num);
create index idx_area_remark_fulltext on area_info using gin(to_tsvector('english', remark));
create index idx_area_created_time on area_info (created_time);
create index idx_area_updated_time on area_info (updated_time);
create index idx_area_ create_time on area_info ( create_time);
create index idx_area_update_time on area_info (update_time);
-- 楼栋表
create table building_info (
@ -45,8 +45,8 @@ create table building_info (
low_tank_height numeric(24,2) null,
create_by varchar(200),
update_by varchar(200),
created_time timestamp default current_timestamp,
updated_time timestamp default current_timestamp,
create_time timestamp default current_timestamp,
update_time timestamp default current_timestamp,
constraint pk_building primary key (id)
);
-- 表的注释
@ -69,8 +69,8 @@ comment on column building_info.pump_count is '水泵数量,记录楼栋内安
comment on column building_info.low_tank_height is '低区水箱高度,记录低区水箱的具体高度。';
comment on column building_info.create_by is '创建者,记录谁创建了这条记录。';
comment on column building_info.update_by is '更新者,记录最近一次修改该记录的用户。';
comment on column building_info.created_time is '创建时间,自动设置为记录创建时的时间戳。';
comment on column building_info.updated_time is '更新时间,自动设置为记录最后一次修改的时间戳。';
comment on column building_info. create_time is '创建时间,自动设置为记录创建时的时间戳。';
comment on column building_info.update_time is '更新时间,自动设置为记录最后一次修改的时间戳。';
create index idx_building_name on building_info (building_name);
create index idx_area_id on building_info (area_id);
@ -91,8 +91,8 @@ create table floor_info (
remark varchar(500),
create_by varchar(200),
update_by varchar(200),
created_time timestamp default current_timestamp,
updated_time timestamp default current_timestamp
create_time timestamp default current_timestamp,
update_time timestamp default current_timestamp
);
-- 添加表注释
@ -111,8 +111,8 @@ comment on column floor_info.parent_id is '父级楼层id,默认值为“0”
comment on column floor_info.remark is '备注信息,用于记录额外说明';
comment on column floor_info.create_by is '创建者,记录谁创建了这条记录';
comment on column floor_info.update_by is '更新者,记录最近一次修改该记录的用户';
comment on column floor_info.created_time is '创建时间,自动设置为记录创建时的时间戳';
comment on column floor_info.updated_time is '更新时间,自动设置为记录最后一次修改的时间戳';
comment on column floor_info. create_time is '创建时间,自动设置为记录创建时的时间戳';
comment on column floor_info.update_time is '更新时间,自动设置为记录最后一次修改的时间戳';
create index idx_floor_info_area_id on floor_info (area_id);
create index idx_floor_info_building_id on floor_info (building_id);
create index idx_floor_info_floor_purpose on floor_info (floor_purpose);
@ -134,8 +134,8 @@ create table house_info (
remark varchar(500) null, -- 备注信息
create_by varchar(200) null, -- 创建者
update_by varchar(200) null, -- 更新者
created_time timestamp default current_timestamp, -- 创建时间
updated_time timestamp default current_timestamp -- 更新时间
create_time timestamp default current_timestamp, -- 创建时间
update_time timestamp default current_timestamp -- 更新时间
);
comment on table house_info is '房屋信息表,用于存储房屋的基本信息及属性';
@ -153,10 +153,43 @@ comment on column house_info.status is '状态:0:正常,1:禁用';
comment on column house_info.remark is '备注信息';
comment on column house_info.create_by is '创建者';
comment on column house_info.update_by is '更新者';
comment on column house_info.created_time is '创建时间';
comment on column house_info.updated_time is '更新时间';
comment on column house_info. create_time is '创建时间';
comment on column house_info.update_time is '更新时间';
create index idx_house_info_area_id on house_info (area_id);
create index idx_house_info_building_id on house_info (building_id);
create index idx_house_info_floor_id on house_info (floor_id);
create index idx_house_info_area_building on house_info (area_id, building_id);
create index idx_house_info_building_floor on house_info (building_id, floor_id);
ALTER TABLE public.house_info ADD order_num int4 NULL;
COMMENT ON COLUMN public.house_info.order_num IS '房间排序号,用于定义房间显示顺序';
-- 采集参数和区域、楼栋、楼层、房间绑定关联表
create table cpm_space_relation (
id varchar(36) primary key not null,
cpm_id varchar(36) not null,
area_id varchar(36) not null,
building_id varchar(36) not null,
floor_id varchar(36) not null,
house_id varchar(36) not null,
create_by varchar(200) null, -- 创建者
update_by varchar(200) null, -- 更新者
create_time timestamp default current_timestamp, -- 创建时间
update_time timestamp default current_timestamp -- 更新时间
);
comment on table cpm_space_relation is '采集参数和区域、楼栋、楼层、房间绑定关联表';
comment on column cpm_space_relation.id is '主键';
comment on column cpm_space_relation.cpm_id is '采集参数id';
comment on column cpm_space_relation.area_id is '所属区域id';
comment on column cpm_space_relation.building_id is '所属建筑物id';
comment on column cpm_space_relation.floor_id is '所属楼层id';
comment on column cpm_space_relation.house_id is '所属房间id';
comment on column cpm_space_relation.create_by is '创建者';
comment on column cpm_space_relation.update_by is '更新者';
comment on column cpm_space_relation.create_time is '创建时间';
comment on column cpm_space_relation.update_time is '更新时间';
create index idx_cpm_space_relation_cpm_id on cpm_space_relation (cpm_id);
create index idx_cpm_space_relation_area_id on cpm_space_relation (area_id);
create index idx_cpm_space_relation_building_id on cpm_space_relation (building_id);
create index idx_cpm_space_relation_floor_id on cpm_space_relation (floor_id);
create index idx_cpm_space_relation_house_id on cpm_space_relation (house_id);
Loading…
Cancel
Save