|
@@ -5,19 +5,26 @@ import com.ruoyi.ems.domain.Area;
|
|
|
import com.ruoyi.ems.domain.AreaBuilding;
|
|
|
import com.ruoyi.ems.domain.AreaBuildingZoning;
|
|
|
import com.ruoyi.ems.domain.EmsDevice;
|
|
|
+import com.ruoyi.ems.domain.EmsFacs;
|
|
|
import com.ruoyi.ems.domain.common.AreaTier;
|
|
|
import com.ruoyi.ems.domain.vo.QueryDevice;
|
|
|
+import com.ruoyi.ems.domain.vo.TreeEntity;
|
|
|
import com.ruoyi.ems.mapper.EmsDeviceMapper;
|
|
|
import com.ruoyi.ems.service.IAreaBuildingService;
|
|
|
import com.ruoyi.ems.service.IAreaBuildingZoningService;
|
|
|
import com.ruoyi.ems.service.IAreaService;
|
|
|
import com.ruoyi.ems.service.IEmsDeviceService;
|
|
|
+import com.ruoyi.ems.service.IEmsFacsService;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 能源设备Service业务层处理
|
|
@@ -39,6 +46,9 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
|
|
|
@Autowired
|
|
|
private IAreaBuildingZoningService zoningService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IEmsFacsService facsService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询能源设备
|
|
|
*
|
|
@@ -56,6 +66,17 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
|
|
|
return emsDevice;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public EmsDevice selectByCode(String code) {
|
|
|
+ EmsDevice emsDevice = emsDeviceMapper.selectEmsDeviceByCode(code);
|
|
|
+
|
|
|
+ if (null != emsDevice) {
|
|
|
+ fillAreaName(emsDevice);
|
|
|
+ }
|
|
|
+
|
|
|
+ return emsDevice;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查询能源设备列表
|
|
|
*
|
|
@@ -95,6 +116,106 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 根据设施获取设备树结构
|
|
|
+ *
|
|
|
+ * @param areaCode 区域编码
|
|
|
+ * @return 设备树结构
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<TreeEntity> getTreeByFacs(String areaCode) {
|
|
|
+ List<TreeEntity> retList = new ArrayList<>();
|
|
|
+ List<Area> areas = areaService.selectAreaList(new Area());
|
|
|
+ List<AreaBuilding> buildings = buildingService.selectAreaBuildingList(new AreaBuilding());
|
|
|
+ List<AreaBuildingZoning> zonings = zoningService.selectAreaBuildingZoningList(new AreaBuildingZoning());
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(areaCode)) {
|
|
|
+ if (CollectionUtils.isNotEmpty(areas)) {
|
|
|
+ for (Area area : areas) {
|
|
|
+ List<EmsFacs> facsList = facsService.selectFacsByArea(area.getAreaCode());
|
|
|
+
|
|
|
+ TreeEntity entity = new TreeEntity();
|
|
|
+ entity.setId("-1");
|
|
|
+ entity.setLabel(area.getAreaName());
|
|
|
+ entity.setChildren(buildFacsDevSub(facsList, areas, buildings, zonings));
|
|
|
+ entity.setTier("Area");
|
|
|
+ retList.add(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Area area = areaService.selectAreaByCode(areaCode);
|
|
|
+
|
|
|
+ if (null != area) {
|
|
|
+ List<EmsFacs> facsList = facsService.selectFacsByArea(area.getAreaCode());
|
|
|
+
|
|
|
+ TreeEntity entity = new TreeEntity();
|
|
|
+ entity.setId("-1");
|
|
|
+ entity.setLabel(area.getAreaName());
|
|
|
+ entity.setChildren(buildFacsDevSub(facsList, areas, buildings, zonings));
|
|
|
+ entity.setTier("Area");
|
|
|
+ retList.add(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<TreeEntity> buildFacsDevSub(List<EmsFacs> facsList, List<Area> areas, List<AreaBuilding> buildings,
|
|
|
+ List<AreaBuildingZoning> zonings) {
|
|
|
+ List<TreeEntity> retList = new ArrayList<>();
|
|
|
+ Map<String, Area> areaMap = areas.stream().collect(Collectors.toMap(Area::getAreaCode, Function.identity()));
|
|
|
+ Map<String, AreaBuilding> buildingMap = buildings.stream()
|
|
|
+ .collect(Collectors.toMap(AreaBuilding::getBldgCode, Function.identity()));
|
|
|
+ Map<String, AreaBuildingZoning> zoningMap = zonings.stream()
|
|
|
+ .collect(Collectors.toMap(AreaBuildingZoning::getZoningCode, Function.identity()));
|
|
|
+
|
|
|
+ for (EmsFacs facs : facsList) {
|
|
|
+ boolean hasSub = false;
|
|
|
+ List<TreeEntity> subList = new ArrayList<>();
|
|
|
+
|
|
|
+ EmsDevice param = new EmsDevice();
|
|
|
+ param.setRefFacs(facs.getFacsCode());
|
|
|
+ List<EmsDevice> devices = emsDeviceMapper.selectEmsDeviceList(param);
|
|
|
+
|
|
|
+ for (EmsDevice device : devices) {
|
|
|
+ hasSub = true;
|
|
|
+ String namePrefix = "";
|
|
|
+ if (StringUtils.equals(AreaTier.Area.name(), device.getAreaType())) {
|
|
|
+ namePrefix = areaMap.get(device.getRefArea()).getAreaName() + " ";
|
|
|
+ }
|
|
|
+ else if (StringUtils.equals(AreaTier.Building.name(), device.getAreaType())) {
|
|
|
+ namePrefix = buildingMap.get(device.getRefArea()).getBldgName() + " ";
|
|
|
+ }
|
|
|
+ else if (StringUtils.equals(AreaTier.Zoning.name(), device.getAreaType())) {
|
|
|
+ namePrefix = zoningMap.get(device.getRefArea()).getZoningName() + " ";
|
|
|
+ }
|
|
|
+
|
|
|
+ String label = StringUtils.isNotBlank(namePrefix) ?
|
|
|
+ namePrefix + device.getDeviceName() :
|
|
|
+ device.getDeviceName();
|
|
|
+
|
|
|
+ TreeEntity entity = new TreeEntity();
|
|
|
+ entity.setId(device.getDeviceCode());
|
|
|
+ entity.setLabel(label);
|
|
|
+ entity.setTier("Device");
|
|
|
+ subList.add(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ TreeEntity entity = new TreeEntity();
|
|
|
+ entity.setId("-1");
|
|
|
+ entity.setLabel(facs.getFacsName());
|
|
|
+ entity.setTier("Facs");
|
|
|
+ entity.setChildren(subList);
|
|
|
+
|
|
|
+ if (hasSub) {
|
|
|
+ retList.add(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 新增能源设备
|
|
|
*
|
|
|
* @param emsDevice 能源设备
|
|
@@ -143,15 +264,48 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
|
|
|
private void fillAreaName(EmsDevice emsDevice) {
|
|
|
if (StringUtils.equals(emsDevice.getAreaType(), AreaTier.Area.name())) {
|
|
|
Area area = areaService.selectAreaByCode(emsDevice.getRefArea());
|
|
|
- emsDevice.setRefAreaName(area != null ? area.getAreaName() : "未知");
|
|
|
+
|
|
|
+ if (null != area) {
|
|
|
+ emsDevice.setRefAreaName(area.getAreaName());
|
|
|
+ emsDevice.setAreaPath(
|
|
|
+ null != area.getShortName() ? area.getShortName() : area.getAreaName());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ emsDevice.setRefAreaName("未知");
|
|
|
+ emsDevice.setAreaPath("未知/");
|
|
|
+ }
|
|
|
}
|
|
|
else if (StringUtils.equals(emsDevice.getAreaType(), AreaTier.Building.name())) {
|
|
|
AreaBuilding building = buildingService.selectAreaBuildingByCode(emsDevice.getRefArea());
|
|
|
- emsDevice.setRefAreaName(building != null ? building.getBldgName() : "未知");
|
|
|
+
|
|
|
+ if (null != building) {
|
|
|
+ emsDevice.setRefAreaName(building.getBldgName());
|
|
|
+ emsDevice.setAreaPath(building.getAreaShortName() + "/" + building.getBldgName());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ emsDevice.setRefAreaName("未知");
|
|
|
+ emsDevice.setAreaPath("未知/");
|
|
|
+ }
|
|
|
}
|
|
|
else if (StringUtils.equals(emsDevice.getAreaType(), AreaTier.Zoning.name())) {
|
|
|
AreaBuildingZoning zoning = zoningService.selectAreaBuildingZoningByCode(emsDevice.getRefArea());
|
|
|
- emsDevice.setRefAreaName(zoning != null ? zoning.getZoningName() : "未知");
|
|
|
+
|
|
|
+ if (null != zoning) {
|
|
|
+ emsDevice.setRefAreaName(zoning.getZoningName());
|
|
|
+
|
|
|
+ AreaBuilding building = buildingService.selectAreaBuildingByCode(zoning.getBldgCode());
|
|
|
+
|
|
|
+ if (null != building) {
|
|
|
+ emsDevice.setAreaPath(
|
|
|
+ building.getAreaShortName() + "/" + building.getBldgName() + "/" + zoning.getZoningName());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ emsDevice.setAreaPath("未知/");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ emsDevice.setRefAreaName("未知");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|