mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
elevator(web): 区域树电梯编码批量查询与 ZoneTreeCollectors 复用
Made-with: Cursor
This commit is contained in:
+13
-9
@@ -31,10 +31,12 @@ import cn.cloudwalk.elevator.handler.device.form.AcsElevatorDeviceQueryForm;
|
|||||||
import cn.cloudwalk.elevator.zone.param.ZoneNextTreeParam;
|
import cn.cloudwalk.elevator.zone.param.ZoneNextTreeParam;
|
||||||
import cn.cloudwalk.elevator.zone.result.ZoneTreeResult;
|
import cn.cloudwalk.elevator.zone.result.ZoneTreeResult;
|
||||||
import cn.cloudwalk.elevator.zone.service.ZoneService;
|
import cn.cloudwalk.elevator.zone.service.ZoneService;
|
||||||
|
import cn.cloudwalk.elevator.zone.util.ZoneTreeCollectors;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -191,17 +193,20 @@ public class AcsElevatorDeviceController extends AbstractCloudwalkController {
|
|||||||
List<ZoneTreeResult> treeList = (List<ZoneTreeResult>)query.getData();
|
List<ZoneTreeResult> treeList = (List<ZoneTreeResult>)query.getData();
|
||||||
List<ZoneTreeResult> treeResultList = new ArrayList<>();
|
List<ZoneTreeResult> treeResultList = new ArrayList<>();
|
||||||
if (treeList != null && treeList.size() > 0) {
|
if (treeList != null && treeList.size() > 0) {
|
||||||
|
LinkedHashSet<String> zoneIds = new LinkedHashSet<>();
|
||||||
|
ZoneTreeCollectors.collectNodeIds(treeList, zoneIds);
|
||||||
|
Map<String, AcsElevatorCodeResultDTO> codeByZoneId =
|
||||||
|
this.elevatorCodeService.mapByZoneIds(new ArrayList<>(zoneIds));
|
||||||
for (ZoneTreeResult zoneTreeResult : treeList) {
|
for (ZoneTreeResult zoneTreeResult : treeList) {
|
||||||
String zoneId = zoneTreeResult.getId();
|
String zoneId = zoneTreeResult.getId();
|
||||||
AcsElevatorCodeParam param = new AcsElevatorCodeParam();
|
AcsElevatorCodeResultDTO code = codeByZoneId.get(zoneId);
|
||||||
param.setZoneId(zoneId);
|
|
||||||
AcsElevatorCodeResultDTO code = this.elevatorCodeService.get(param);
|
|
||||||
if (!ObjectUtils.isEmpty(code)) {
|
if (!ObjectUtils.isEmpty(code)) {
|
||||||
zoneTreeResult.setElevatorCode(code.getCode());
|
zoneTreeResult.setElevatorCode(code.getCode());
|
||||||
zoneTreeResult.setIsFirst(code.getIsFirst());
|
zoneTreeResult.setIsFirst(code.getIsFirst());
|
||||||
}
|
}
|
||||||
if (zoneTreeResult.getChildren() != null) {
|
if (zoneTreeResult.getChildren() != null) {
|
||||||
List<ZoneTreeResult> chidList = treeRecursionDataList(zoneTreeResult.getChildren());
|
List<ZoneTreeResult> chidList =
|
||||||
|
treeRecursionDataList(zoneTreeResult.getChildren(), codeByZoneId);
|
||||||
zoneTreeResult.setChildren(chidList);
|
zoneTreeResult.setChildren(chidList);
|
||||||
}
|
}
|
||||||
treeResultList.add(zoneTreeResult);
|
treeResultList.add(zoneTreeResult);
|
||||||
@@ -215,19 +220,18 @@ public class AcsElevatorDeviceController extends AbstractCloudwalkController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ZoneTreeResult> treeRecursionDataList(List<ZoneTreeResult> childList) throws ServiceException {
|
public List<ZoneTreeResult> treeRecursionDataList(List<ZoneTreeResult> childList,
|
||||||
|
Map<String, AcsElevatorCodeResultDTO> codeByZoneId) {
|
||||||
List<ZoneTreeResult> childResultList = new ArrayList<>();
|
List<ZoneTreeResult> childResultList = new ArrayList<>();
|
||||||
for (ZoneTreeResult zoneTreeResult : childList) {
|
for (ZoneTreeResult zoneTreeResult : childList) {
|
||||||
String id = zoneTreeResult.getId();
|
String id = zoneTreeResult.getId();
|
||||||
AcsElevatorCodeParam param = new AcsElevatorCodeParam();
|
AcsElevatorCodeResultDTO code = codeByZoneId.get(id);
|
||||||
param.setZoneId(id);
|
|
||||||
AcsElevatorCodeResultDTO code = this.elevatorCodeService.get(param);
|
|
||||||
if (!ObjectUtils.isEmpty(code)) {
|
if (!ObjectUtils.isEmpty(code)) {
|
||||||
zoneTreeResult.setElevatorCode(code.getCode());
|
zoneTreeResult.setElevatorCode(code.getCode());
|
||||||
zoneTreeResult.setIsFirst(code.getIsFirst());
|
zoneTreeResult.setIsFirst(code.getIsFirst());
|
||||||
}
|
}
|
||||||
if (zoneTreeResult.getChildren() != null && zoneTreeResult.getChildren().size() > 0) {
|
if (zoneTreeResult.getChildren() != null && zoneTreeResult.getChildren().size() > 0) {
|
||||||
zoneTreeResult.setChildren(treeRecursionDataList(zoneTreeResult.getChildren()));
|
zoneTreeResult.setChildren(treeRecursionDataList(zoneTreeResult.getChildren(), codeByZoneId));
|
||||||
}
|
}
|
||||||
childResultList.add(zoneTreeResult);
|
childResultList.add(zoneTreeResult);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-15
@@ -23,11 +23,11 @@ import cn.cloudwalk.elevator.util.StringUtils;
|
|||||||
import cn.cloudwalk.elevator.zone.param.ZoneNextTreeParam;
|
import cn.cloudwalk.elevator.zone.param.ZoneNextTreeParam;
|
||||||
import cn.cloudwalk.elevator.zone.result.ZoneTreeResult;
|
import cn.cloudwalk.elevator.zone.result.ZoneTreeResult;
|
||||||
import cn.cloudwalk.elevator.zone.service.ZoneService;
|
import cn.cloudwalk.elevator.zone.service.ZoneService;
|
||||||
|
import cn.cloudwalk.elevator.zone.util.ZoneTreeCollectors;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.ObjectUtils;
|
||||||
@@ -93,7 +93,7 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
|
|||||||
this.zoneService.tree(zoneNextTreeParam, getCloudwalkContext());
|
this.zoneService.tree(zoneNextTreeParam, getCloudwalkContext());
|
||||||
List<ZoneTreeResult> treeList = (List<ZoneTreeResult>)query.getData();
|
List<ZoneTreeResult> treeList = (List<ZoneTreeResult>)query.getData();
|
||||||
LinkedHashSet<String> zoneIdsForCode = new LinkedHashSet<>();
|
LinkedHashSet<String> zoneIdsForCode = new LinkedHashSet<>();
|
||||||
collectZoneTreeNodeIds(treeList, zoneIdsForCode);
|
ZoneTreeCollectors.collectNodeIds(treeList, zoneIdsForCode);
|
||||||
Map<String, AcsElevatorCodeResultDTO> codeByZoneId =
|
Map<String, AcsElevatorCodeResultDTO> codeByZoneId =
|
||||||
this.elevatorCodeService.mapByZoneIds(new ArrayList<>(zoneIdsForCode));
|
this.elevatorCodeService.mapByZoneIds(new ArrayList<>(zoneIdsForCode));
|
||||||
List<AcsElevatorCodeQueryDTO> treeResultList = new ArrayList<>();
|
List<AcsElevatorCodeQueryDTO> treeResultList = new ArrayList<>();
|
||||||
@@ -226,17 +226,4 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
|
|||||||
this.LOGGER.warn("getKey(39204) 已停用明文密钥下发,调用方应迁移至安全鉴权方式");
|
this.LOGGER.warn("getKey(39204) 已停用明文密钥下发,调用方应迁移至安全鉴权方式");
|
||||||
return CloudwalkResult.success(result);
|
return CloudwalkResult.success(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 收集树节点 id,用于与 {@code code_elevator_area.zone_id} 批量对齐查询。 */
|
|
||||||
private static void collectZoneTreeNodeIds(List<ZoneTreeResult> nodes, Set<String> out) {
|
|
||||||
if (nodes == null || out == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (ZoneTreeResult n : nodes) {
|
|
||||||
if (StringUtils.isNotBlank(n.getId())) {
|
|
||||||
out.add(n.getId());
|
|
||||||
}
|
|
||||||
collectZoneTreeNodeIds(n.getChildren(), out);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
package cn.cloudwalk.elevator.zone.util;
|
||||||
|
|
||||||
|
import cn.cloudwalk.elevator.util.StringUtils;
|
||||||
|
import cn.cloudwalk.elevator.zone.result.ZoneTreeResult;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/** 区域树遍历辅助,供批量查询电梯编码等场景复用。 */
|
||||||
|
public final class ZoneTreeCollectors {
|
||||||
|
|
||||||
|
private ZoneTreeCollectors() {}
|
||||||
|
|
||||||
|
/** 深度优先收集树上各节点 {@link ZoneTreeResult#getId()}(去重由调用方 {@link Set} 保证)。 */
|
||||||
|
public static void collectNodeIds(List<ZoneTreeResult> nodes, Set<String> out) {
|
||||||
|
if (nodes == null || out == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (ZoneTreeResult n : nodes) {
|
||||||
|
if (StringUtils.isNotBlank(n.getId())) {
|
||||||
|
out.add(n.getId());
|
||||||
|
}
|
||||||
|
collectNodeIds(n.getChildren(), out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user