Browse Source

1、空间区域信息管理;

2、设备台账添加排序;
dev
mh 2 months ago
parent
commit
e97414608d
  1. 14
      mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java
  2. 50
      mh-common/src/main/java/com/mh/common/core/domain/entity/SysParams.java
  3. 17
      mh-system/src/main/java/com/mh/system/mapper/SysParamsMapper.java
  4. 18
      mh-system/src/main/java/com/mh/system/service/ISysParamsService.java
  5. 1
      mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java
  6. 28
      mh-system/src/main/java/com/mh/system/service/impl/SysParamsServiceImpl.java
  7. 49
      mh-system/src/main/java/com/mh/system/service/space/impl/FloorInfoServiceImpl.java
  8. 92
      mh-system/src/main/java/com/mh/system/service/space/impl/HouseInfoServiceImpl.java
  9. 20
      mh-system/src/main/resources/mapper/system/SysParamsMapper.xml

14
mh-common/src/main/java/com/mh/common/core/domain/entity/DeviceLedger.java

@ -105,6 +105,19 @@ public class DeviceLedger extends BaseEntity {
*/
private String systemType;
/**
* 排序
*/
private Integer orderNum;
public Integer getOrderNum() {
return orderNum;
}
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
public String getSystemType() {
return systemType;
}
@ -267,6 +280,7 @@ public class DeviceLedger extends BaseEntity {
.append("remark", remark)
.append("params", params)
.append("systemType", systemType)
.append("orderNum", orderNum)
.toString();
}
}

50
mh-common/src/main/java/com/mh/common/core/domain/entity/SysParams.java

@ -0,0 +1,50 @@
package com.mh.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mh.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 系统信息表
* @date 2025-03-12 11:09:44
*/
@Setter
@Getter
@TableName("sys_params")
public class SysParams extends BaseEntity {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
/**
* 项目名称
*/
private String proName;
/**
* logo
*/
private String logo;
/**
* 行政区域id方便获取当前温湿度天气
*/
private String proArea;
@Override
public String toString() {
return new ToStringBuilder(this)
.append("id", id)
.append("proName", proName)
.append("logo", logo)
.append("proArea", proArea)
.toString();
}
}

17
mh-system/src/main/java/com/mh/system/mapper/SysParamsMapper.java

@ -0,0 +1,17 @@
package com.mh.system.mapper;
import com.mh.common.core.domain.entity.SysParams;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 系统参数mapper
* @date 2025-03-12 11:12:29
*/
public interface SysParamsMapper {
List<SysParams> selectSysParamsList();
}

18
mh-system/src/main/java/com/mh/system/service/ISysParamsService.java

@ -0,0 +1,18 @@
package com.mh.system.service;
import com.mh.common.core.domain.entity.SysParams;
import java.util.List;
/**
* @author LJF
* @version 1.0
* @project EEMCS
* @description 系统参数服务类
* @date 2025-03-12 11:13:24
*/
public interface ISysParamsService {
List<SysParams> queryList();
}

1
mh-system/src/main/java/com/mh/system/service/device/impl/DeviceLedgerServiceImpl.java

@ -56,6 +56,7 @@ public class DeviceLedgerServiceImpl implements IDeviceLedgerService {
queryWrapper.between("create_time", java.sql.Date.valueOf(beginTime), java.sql.Date.valueOf(endTime));
}
}
queryWrapper.orderByAsc("order_num");
return deviceLedgerMapper.selectList(queryWrapper);
}

28
mh-system/src/main/java/com/mh/system/service/impl/SysParamsServiceImpl.java

@ -0,0 +1,28 @@
package com.mh.system.service.impl;
import com.mh.common.core.domain.entity.SysParams;
import com.mh.system.mapper.SysParamsMapper;
import com.mh.system.service.ISysParamsService;
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-03-12 11:14:05
*/
@Service
public class SysParamsServiceImpl implements ISysParamsService {
@Autowired
private SysParamsMapper sysParamsMapper;
@Override
public List<SysParams> queryList() {
return sysParamsMapper.selectSysParamsList();
}
}

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

@ -1,11 +1,14 @@
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.entity.FloorInfo;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.space.FloorInfoMapper;
import com.mh.system.service.space.IFloorInfoService;
import com.mh.system.service.space.IHouseInfoService;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -24,6 +27,9 @@ public class FloorInfoServiceImpl implements IFloorInfoService {
@Resource
private FloorInfoMapper floorInfoMapper;
@Autowired
private IHouseInfoService houseInfoService;
@Override
public List<FloorInfo> selectFloorInfoList(FloorInfo floorInfo) {
if (floorInfo == null) {
@ -57,25 +63,50 @@ public class FloorInfoServiceImpl implements IFloorInfoService {
@Override
public int insertFloorInfo(FloorInfo floorInfo) {
if(StringUtils.isEmpty(floorInfo.getAreaId())) {
throw new RuntimeException("没有对应的区域id");
}
if(StringUtils.isEmpty(floorInfo.getBuildingId())) {
throw new RuntimeException("没有对应的楼栋id");
}
getAreaId(floorInfo);
return floorInfoMapper.insert(floorInfo);
}
@Override
public int updateFloorInfo(FloorInfo floorInfo) {
getAreaId(floorInfo);
floorInfo.setUpdateTime(new Date());
return floorInfoMapper.updateById(floorInfo);
}
private void getAreaId(FloorInfo floorInfo) {
if(StringUtils.isEmpty(floorInfo.getAreaId())) {
throw new RuntimeException("没有对应的区域id");
// 获取完整的空间树结构
List<SpaceTreeSelect> spaceTree = houseInfoService.buildTree();
// 递归查找目标楼栋节点
SpaceTreeSelect buildingNode = findBuildingNode(spaceTree, floorInfo.getBuildingId());
if(buildingNode != null && buildingNode.getParentId() != null) {
floorInfo.setAreaId(buildingNode.getParentId());
} else {
throw new RuntimeException("未找到楼栋ID对应的区域信息");
}
}
if(StringUtils.isEmpty(floorInfo.getBuildingId())) {
throw new RuntimeException("没有对应的楼栋id");
}
floorInfo.setUpdateTime(new Date());
return floorInfoMapper.updateById(floorInfo);
}
// 递归查找楼栋节点方法
private SpaceTreeSelect findBuildingNode(List<SpaceTreeSelect> nodes, String targetBuildingId) {
for (SpaceTreeSelect node : nodes) {
if (node.getNodeType() == 2 && targetBuildingId.equals(node.getId())) {
return node;
}
if (node.getChildren() != null && !node.getChildren().isEmpty()) {
SpaceTreeSelect found = findBuildingNode(node.getChildren(), targetBuildingId);
if (found != null) {
return found;
}
}
}
return null;
}
@Override

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

@ -3,17 +3,16 @@ 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.core.domain.entity.*;
import com.mh.common.utils.StringUtils;
import com.mh.system.mapper.SysParamsMapper;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
@ -43,6 +42,9 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
@Resource
private HouseInfoMapper houseInfoMapper;
@Resource
private SysParamsMapper sysParamsMapper;
@Override
public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) {
if (houseInfo == null) {
@ -80,30 +82,62 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
@Override
public int insertHouseInfo(HouseInfo houseInfo) {
if (StringUtils.isEmpty(houseInfo.getAreaId())) {
throw new RuntimeException("没有对应的区域id");
getAreaIdAndBuildingId(houseInfo);
return houseInfoMapper.insert(houseInfo);
}
if (StringUtils.isEmpty(houseInfo.getBuildingId())) {
throw new RuntimeException("没有对应的楼栋id");
// 递归查找楼栋节点方法
private SpaceTreeSelect findNode(List<SpaceTreeSelect> nodes, String targetId, int nodeType) {
for (SpaceTreeSelect node : nodes) {
if (node.getNodeType() == nodeType && targetId.equals(node.getId())) {
return node;
}
if (StringUtils.isEmpty(houseInfo.getFloorId())) {
throw new RuntimeException("没有对应的楼层id");
if (node.getChildren() != null && !node.getChildren().isEmpty()) {
SpaceTreeSelect found = findNode(node.getChildren(), targetId, nodeType);
if (found != null) {
return found;
}
return houseInfoMapper.insert(houseInfo);
}
}
return null;
}
@Override
public int updateHouseInfo(HouseInfo houseInfo) {
if (StringUtils.isEmpty(houseInfo.getAreaId())) {
throw new RuntimeException("没有对应的区域id");
getAreaIdAndBuildingId(houseInfo);
return houseInfoMapper.updateById(houseInfo);
}
private void getAreaIdAndBuildingId(HouseInfo houseInfo) {
if(StringUtils.isEmpty(houseInfo.getBuildingId())) {
throw new RuntimeException("没有对应的楼栋id");
// 获取完整的空间树结构
List<SpaceTreeSelect> spaceTree = buildTree();
// 递归查找目标楼栋节点
SpaceTreeSelect buildNode = findNode(spaceTree, houseInfo.getFloorId(), 3);
if(buildNode != null && buildNode.getParentId() != null) {
houseInfo.setBuildingId(buildNode.getParentId());
} else {
throw new RuntimeException("未找到对应的楼栋id");
}
}
if(StringUtils.isEmpty(houseInfo.getAreaId())) {
// 获取完整的空间树结构
List<SpaceTreeSelect> spaceTree = buildTree();
// 递归查找目标楼栋节点
SpaceTreeSelect areaNode = findNode(spaceTree, houseInfo.getBuildingId(), 2);
if(areaNode != null && areaNode.getParentId() != null) {
houseInfo.setAreaId(areaNode.getParentId());
} else {
throw new RuntimeException("未找到对应的区域id");
}
}
if (StringUtils.isEmpty(houseInfo.getFloorId())) {
throw new RuntimeException("没有对应的楼层id");
}
return houseInfoMapper.updateById(houseInfo);
}
@Override
@ -119,11 +153,11 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
@Override
public List<SpaceTreeSelect> buildTree() {
List<AreaInfo> areaInfos = areaInfoMapper.selectList(null);
List<AreaInfo> areaInfos = areaInfoMapper.selectList(new QueryWrapper<AreaInfo>().orderByAsc("order_num"));
if (areaInfos != null && !areaInfos.isEmpty()) {
List<BuildingInfo> buildingInfos = buildingInfoMapper.selectList(null);
List<FloorInfo> floorInfos = floorInfoMapper.selectList(null);
List<HouseInfo> houseInfos = houseInfoMapper.selectList(null);
List<BuildingInfo> buildingInfos = buildingInfoMapper.selectList(new QueryWrapper<BuildingInfo>().orderByAsc("order_num"));
List<FloorInfo> floorInfos = floorInfoMapper.selectList(new QueryWrapper<FloorInfo>().orderByAsc("order_num"));
List<HouseInfo> houseInfos = houseInfoMapper.selectList(new QueryWrapper<HouseInfo>().orderByAsc("order_num"));
return buildTree(areaInfos, buildingInfos, floorInfos, houseInfos);
}
return List.of();
@ -135,13 +169,13 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
List<HouseInfo> houseInfos) {
// 房间 -> 楼层映射
Map<String, List<SpaceTreeSelect>> floorMap = houseInfos.stream()
.map(r -> new SpaceTreeSelect(r.getId(), r.getHouseName(), false, r.getFloorId(), 3))
.map(r -> new SpaceTreeSelect(r.getId(), r.getHouseName(), false, r.getFloorId(), 4))
.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(), 2);
SpaceTreeSelect node = new SpaceTreeSelect(f.getId(), f.getFloorName(), false, f.getBuildingId(), 3);
node.setChildren(floorMap.getOrDefault(f.getId(), Collections.emptyList()));
return node;
})
@ -150,20 +184,26 @@ public class HouseInfoServiceImpl implements IHouseInfoService {
// 楼栋 -> 区域映射
Map<String, List<SpaceTreeSelect>> areaMap = buildingInfos.stream()
.map(b -> {
SpaceTreeSelect node = new SpaceTreeSelect(b.getId(), b.getBuildingName(), false, b.getAreaId(), 1);
SpaceTreeSelect node = new SpaceTreeSelect(b.getId(), b.getBuildingName(), false, b.getAreaId(), 2);
node.setChildren(buildingMap.getOrDefault(b.getId(), Collections.emptyList()));
return node;
})
.collect(Collectors.groupingBy(SpaceTreeSelect::getParentId));
// 构建区域树
return areaInfos.stream()
// 区域 -> 根节点映射
Map<String, List<SpaceTreeSelect>> map = areaInfos.stream()
.map(a -> {
SpaceTreeSelect node = new SpaceTreeSelect(a.getId(), a.getAreaName(), false, null, 0);
SpaceTreeSelect node = new SpaceTreeSelect(a.getId(), a.getAreaName(), false, "0", 1);
node.setChildren(areaMap.getOrDefault(a.getId(), Collections.emptyList()));
return node;
})
.collect(Collectors.toList());
.collect(Collectors.groupingBy(SpaceTreeSelect::getParentId));
List<SysParams> sysParams = sysParamsMapper.selectSysParamsList();
return sysParams.stream().map(r -> {
SpaceTreeSelect node = new SpaceTreeSelect(r.getId(), r.getProName(), false, null, 0);
node.setChildren(map.getOrDefault(r.getId(), Collections.emptyList()));
return node;
}).collect(Collectors.toList());
}
}

20
mh-system/src/main/resources/mapper/system/SysParamsMapper.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mh.system.mapper.SysParamsMapper">
<resultMap type="SysParams" id="SysParamsResult">
<id property="id" column="id" />
<result property="proName" column="pro_name" />
<result property="logo" column="logo" />
<result property="proArea" column="pro_area" />
</resultMap>
<select id="selectSysParamsList" parameterType="SysParams" resultMap="SysParamsResult">
select id, pro_name, logo, pro_area from sys_params limit 1
</select>
</mapper>
Loading…
Cancel
Save