|
@@ -8,15 +8,27 @@ import com.ruoyi.common.core.utils.DateTimeUtil;
|
|
|
import com.ruoyi.common.core.utils.DateUtils;
|
|
|
import com.ruoyi.common.core.utils.ExpressUtil;
|
|
|
import com.ruoyi.common.core.utils.StreamUtils;
|
|
|
+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.AdmEmsElecPgIndexMapper;
|
|
|
import com.ruoyi.ems.mapper.AdmEmsIndexRangeMapper;
|
|
|
import com.ruoyi.ems.mapper.EmsFacsMapper;
|
|
|
+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 com.ruoyi.ems.service.IEmsObjAbilityService;
|
|
|
import com.ruoyi.ems.service.IEmsObjAttrService;
|
|
|
import com.ruoyi.ems.service.IEmsObjEventService;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -28,6 +40,8 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
import java.util.function.BiFunction;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 能源设施/系统Service业务层处理
|
|
@@ -41,19 +55,22 @@ public class EmsFacsServiceImpl implements IEmsFacsService {
|
|
|
private EmsFacsMapper emsFacsMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private AdmEmsIndexRangeMapper admEmsIndexRangeMapper;
|
|
|
+ private IEmsDeviceService deviceService;
|
|
|
|
|
|
@Autowired
|
|
|
- private AdmEmsElecPgIndexMapper admEmsElecPgIndexMapper;
|
|
|
+ private IAreaService areaService;
|
|
|
|
|
|
@Autowired
|
|
|
- private IEmsObjAttrService objAttrService;
|
|
|
+ private IAreaBuildingService buildingService;
|
|
|
|
|
|
@Autowired
|
|
|
- private IEmsObjAbilityService objAbilityService;
|
|
|
+ private IAreaBuildingZoningService zoningService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AdmEmsIndexRangeMapper admEmsIndexRangeMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private IEmsObjEventService objEventService;
|
|
|
+ private AdmEmsElecPgIndexMapper admEmsElecPgIndexMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询能源设施
|
|
@@ -91,6 +108,111 @@ public class EmsFacsServiceImpl implements IEmsFacsService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 根据设施获取设备树结构
|
|
|
+ *
|
|
|
+ * @param queryDevice 查询条件
|
|
|
+ * @return 设备树结构
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<TreeEntity> getFacsDevTree(QueryDevice queryDevice) {
|
|
|
+ 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(queryDevice.getRefArea())) {
|
|
|
+ if (CollectionUtils.isNotEmpty(areas)) {
|
|
|
+ for (Area area : areas) {
|
|
|
+ List<EmsFacs> facsList = selectFacsByArea(area.getAreaCode());
|
|
|
+
|
|
|
+ TreeEntity entity = new TreeEntity();
|
|
|
+ entity.setId(area.getAreaCode());
|
|
|
+ entity.setLabel(area.getAreaName());
|
|
|
+ entity.setChildren(buildFacsDevSub(queryDevice, facsList, areas, buildings, zonings));
|
|
|
+ entity.setTier("Area");
|
|
|
+ retList.add(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Area area = areaService.selectAreaByCode(queryDevice.getRefArea());
|
|
|
+
|
|
|
+ if (null != area) {
|
|
|
+ List<EmsFacs> facsList = selectFacsByArea(area.getAreaCode());
|
|
|
+
|
|
|
+ TreeEntity entity = new TreeEntity();
|
|
|
+ entity.setId(area.getAreaCode());
|
|
|
+ entity.setLabel(area.getAreaName());
|
|
|
+ entity.setChildren(buildFacsDevSub(queryDevice, facsList, areas, buildings, zonings));
|
|
|
+ entity.setTier("Area");
|
|
|
+ retList.add(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private List<TreeEntity> buildFacsDevSub(QueryDevice queryParam, 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<>();
|
|
|
+
|
|
|
+ queryParam.setRefFacs(facs.getFacsCode());
|
|
|
+ List<EmsDevice> devices = deviceService.selectList(queryParam);
|
|
|
+
|
|
|
+ for (EmsDevice device : devices) {
|
|
|
+ hasSub = true;
|
|
|
+ String namePrefix = "";
|
|
|
+ if (StringUtils.equals(AreaTier.Area.name(), device.getAreaType())) {
|
|
|
+ namePrefix = areaMap.get(device.getRefArea()).getShortName();
|
|
|
+ }
|
|
|
+ else if (StringUtils.equals(AreaTier.Building.name(), device.getAreaType())) {
|
|
|
+ namePrefix = buildingMap.get(device.getRefArea()).getBldgName();
|
|
|
+ }
|
|
|
+ else if (StringUtils.equals(AreaTier.Zoning.name(), device.getAreaType())) {
|
|
|
+ AreaBuildingZoning zoning = zoningMap.get(device.getRefArea());
|
|
|
+ AreaBuilding building = zoning != null ? buildingMap.get(zoning.getBldgCode()) : null;
|
|
|
+ namePrefix = (building != null ? building.getBldgName() : "") + "/" + (zoning != null ?
|
|
|
+ zoning.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(facs.getFacsCode());
|
|
|
+ entity.setLabel(facs.getFacsName());
|
|
|
+ entity.setTier("Facs");
|
|
|
+ entity.setChildren(subList);
|
|
|
+
|
|
|
+ if (hasSub) {
|
|
|
+ retList.add(entity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 新增能源设施/系统
|
|
|
*
|
|
|
* @param emsFacs 能源设施/系统
|