fix(v0.11): 兼容优先的走查整改——SnowFlake/BeanCopy 卫生与电梯编码批量查询

- 不改 AES 模式、不重命名 KafkaProducter,避免影响旧客户端与二进制兼容。
- SnowFlakeSerialCode:中断等待改恢复中断标志 + Slf4j 替代 printStackTrace。
- BeanCopyUtils:实例化仅捕获 ReflectiveOperationException,copyProperties 异常仍按运行时上抛,对外行为与旧版一致。
- 电梯 39202:新增 MyBatis listByZoneIds 与 AcsElevatorCodeService.mapByZoneIds(增量 API),树接口仍逐条组装 DTO,仅将循环内多次 get 合并为一次 IN 查询,HTTP 契约不变。

验证:maven-cloudwalk-legacy-public 全量 compile;cw-elevator-application-data 单模块 compile 通过。

Made-with: Cursor

Former-commit-id: 57270a7ac5
This commit is contained in:
反编译工作区
2026-04-25 00:41:26 +08:00
parent 6379262a8f
commit 82ae4d5898
9 changed files with 85 additions and 21 deletions
@@ -7,7 +7,6 @@ import cn.cloudwalk.cloud.result.CloudwalkResult;
import cn.cloudwalk.cloud.utils.BeanCopyUtils;
import cn.cloudwalk.elevator.codeElevatorArea.dto.AcsElevatorCodeQueryDTO;
import cn.cloudwalk.elevator.codeElevatorArea.dto.AcsElevatorCodeResultDTO;
import cn.cloudwalk.elevator.codeElevatorArea.param.AcsElevatorCodeParam;
import cn.cloudwalk.elevator.codeElevatorArea.service.AcsElevatorCodeService;
import cn.cloudwalk.elevator.common.AbstractCloudwalkController;
import cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceQueryFoDTO;
@@ -25,7 +24,10 @@ import cn.cloudwalk.elevator.zone.param.ZoneNextTreeParam;
import cn.cloudwalk.elevator.zone.result.ZoneTreeResult;
import cn.cloudwalk.elevator.zone.service.ZoneService;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
@@ -90,6 +92,10 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
CloudwalkResult<List<ZoneTreeResult>> query =
this.zoneService.tree(zoneNextTreeParam, getCloudwalkContext());
List<ZoneTreeResult> treeList = (List<ZoneTreeResult>)query.getData();
LinkedHashSet<String> zoneIdsForCode = new LinkedHashSet<>();
collectZoneTreeNodeIds(treeList, zoneIdsForCode);
Map<String, AcsElevatorCodeResultDTO> codeByZoneId =
this.elevatorCodeService.mapByZoneIds(new ArrayList<>(zoneIdsForCode));
List<AcsElevatorCodeQueryDTO> treeResultList = new ArrayList<>();
if (treeList != null && treeList.size() > 0) {
for (ZoneTreeResult zoneTreeResult : treeList) {
@@ -106,9 +112,7 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
querydTO.setId(floor.getId());
querydTO.setZoneName(floor.getName());
querydTO.setZoneType(floor.getType());
AcsElevatorCodeParam paramCode = new AcsElevatorCodeParam();
paramCode.setZoneId(floor.getId());
AcsElevatorCodeResultDTO code = this.elevatorCodeService.get(paramCode);
AcsElevatorCodeResultDTO code = codeByZoneId.get(floor.getId());
if (!ObjectUtils.isEmpty(code)) {
querydTO.setCode(code.getCode());
querydTO.setIsFirst(code.getIsFirst());
@@ -123,9 +127,7 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
querydTO.setZoneName(building.getName());
querydTO.setZoneType("FLOOR");
querydTO.setId(building.getId());
AcsElevatorCodeParam paramCode = new AcsElevatorCodeParam();
paramCode.setZoneId(zoneTreeResult.getId());
AcsElevatorCodeResultDTO code = this.elevatorCodeService.get(paramCode);
AcsElevatorCodeResultDTO code = codeByZoneId.get(zoneTreeResult.getId());
if (!ObjectUtils.isEmpty(code)) {
querydTO.setCode(code.getCode());
querydTO.setIsFirst(code.getIsFirst());
@@ -144,9 +146,7 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
querydTO.setZoneName(floor.getName());
querydTO.setZoneType(floor.getType());
querydTO.setId(floor.getId());
AcsElevatorCodeParam paramCode = new AcsElevatorCodeParam();
paramCode.setZoneId(floor.getId());
AcsElevatorCodeResultDTO code = this.elevatorCodeService.get(paramCode);
AcsElevatorCodeResultDTO code = codeByZoneId.get(floor.getId());
if (!ObjectUtils.isEmpty(code)) {
querydTO.setCode(code.getCode());
querydTO.setIsFirst(code.getIsFirst());
@@ -161,9 +161,7 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
querydTO.setZoneName(zoneTreeResult.getName());
querydTO.setZoneType("FLOOR");
querydTO.setId(zoneTreeResult.getId());
AcsElevatorCodeParam paramCode = new AcsElevatorCodeParam();
paramCode.setZoneId(zoneTreeResult.getId());
AcsElevatorCodeResultDTO code = this.elevatorCodeService.get(paramCode);
AcsElevatorCodeResultDTO code = codeByZoneId.get(zoneTreeResult.getId());
if (!ObjectUtils.isEmpty(code)) {
querydTO.setCode(code.getCode());
querydTO.setIsFirst(code.getIsFirst());
@@ -228,4 +226,17 @@ public class AcsElevatorDeviceGetWayController extends AbstractCloudwalkControll
this.LOGGER.warn("getKey(39204) 已停用明文密钥下发,调用方应迁移至安全鉴权方式");
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);
}
}
}