fix: relocate cwos-portal decompiled output to correct path; remove nested directory

Former-commit-id: dc30d42a8c55ed8b2382a41dc2434233fbed9930
This commit is contained in:
反编译工作区
2026-04-29 12:09:48 +08:00
parent ea8e492076
commit e8672a3c7b
1759 changed files with 547735 additions and 280 deletions
@@ -0,0 +1,125 @@
# 电梯应用 API 测试套件总览
- **生成时间**: 2026-04-28T10:21:36.376623
- **清单来源**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/api_catalog.json`(共 **43** 条接口定义)
- **后端 Controller 走查**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/BACKEND-API-INVENTORY.md`
## 1. 说明
- **全量清单**:第二节,来自 `api_catalog.json`,含是否参与冒烟/对拍。
- **测试结果矩阵**:第三节,与本次运行生成的 **JSON** 侧车文件对齐(与 `.md` 同名的 `.json`)。若应用未启动导致 pytest **skip**,则无 JSON,矩阵中表现为 **—**。
- **横向对拍**`pytest tests/test_parity_full_catalog.py` 可覆盖 **catalog 全部** 条目;`test_parity_endpoints.py`**include_in_parity=true** 的核心项。
## 2. 全量接口测试清单(catalog)
| ID | 名称 | 方法 | Path | 冒烟 | 横向对拍 |
| ---- | ---- | ---- | ---- | ---- | -------- |
| `person_add_visitor_min` | 访客派梯-最小体 | POST | `/elevator/person/add/visitor` | 是 | 是 |
| `person_detail` | 人员详情-分页 | POST | `/elevator/person/detail` | 是 | 是 |
| `passrule_page` | 通行规则-分页 | POST | `/elevator/passRule/page` | 是 | 是 |
| `record_page` | 通行记录-分页 | POST | `/intelligent/acs/elevator/record/page` | 是 | 是 |
| `person_add` | 人员-从现有人员添加 | POST | `/elevator/person/add` | 是 | 否 |
| `person_edit` | 人员-编辑 | POST | `/elevator/person/edit` | 是 | 否 |
| `person_delete` | 人员-删除 | POST | `/elevator/person/delete` | 是 | 否 |
| `person_page` | 人员-分页 | POST | `/elevator/person/page` | 是 | 否 |
| `person_time_detail` | 人员-时间详情 | POST | `/elevator/person/timeDetail` | 是 | 否 |
| `person_page_by_app` | 人员-应用分页 | POST | `/elevator/person/pageByApp` | 是 | 否 |
| `passrule_floor` | 通行规则-楼层列表 | POST | `/elevator/passRule/floor` | 是 | 否 |
| `passrule_add` | 通行规则-新增 | POST | `/elevator/passRule/add` | 是 | 否 |
| `passrule_edit` | 通行规则-修改 | POST | `/elevator/passRule/edit` | 是 | 否 |
| `passrule_delete` | 通行规则-删除 | POST | `/elevator/passRule/delete` | 是 | 否 |
| `passrule_detail` | 通行规则-详情 | POST | `/elevator/passRule/detail` | 是 | 否 |
| `passrule_image` | 通行规则-按人像查楼层权限 | POST | `/elevator/passRule/image` | 是 | 否 |
| `passrule_image_list` | 通行规则-批量人像 | POST | `/elevator/passRule/image/list` | 是 | 否 |
| `record_analyse_cycle` | 记录-周期统计 | POST | `/intelligent/acs/elevator/record/analyse/cycle` | 是 | 否 |
| `record_analyse_count` | 记录-次数统计 | POST | `/intelligent/acs/elevator/record/analyse/count` | 是 | 否 |
| `record_page_request` | 记录-请求分页 | POST | `/intelligent/acs/elevator/record/page/request` | 是 | 否 |
| `record_device_list` | 记录-设备列表 | POST | `/intelligent/acs/elevator/record/device/list` | 是 | 否 |
| `record_zone_tree` | 记录-区域树 | POST | `/intelligent/acs/elevator/record/zone/tree` | 是 | 否 |
| `device_v2_39201` | 设备网关-39201 设备列表 | POST | `/device/v2/39201` | 是 | 否 |
| `device_v2_39202` | 设备网关-39202 区域电梯码 | POST | `/device/v2/39202` | 是 | 否 |
| `device_v2_39203` | 设备网关-39203 添加记录 | POST | `/device/v2/39203` | 是 | 否 |
| `device_v2_39204` | 设备网关-39204 密钥时间戳(已废弃) | POST | `/device/v2/39204` | 是 | 否 |
| `elevator_device_add` | 设备-新增 | POST | `/elevator/device/add` | 是 | 否 |
| `elevator_device_edit` | 设备-编辑 | POST | `/elevator/device/edit` | 是 | 否 |
| `elevator_device_get_by_id` | 设备-按ID查询 | POST | `/elevator/device/getById` | 是 | 否 |
| `elevator_device_delete` | 设备-删除 | POST | `/elevator/device/delete` | 是 | 否 |
| `elevator_device_edit_code` | 设备-改码 | POST | `/elevator/device/editCode` | 是 | 否 |
| `elevator_device_get` | 设备-查询列表 | POST | `/elevator/device/get` | 是 | 否 |
| `elevator_device_export` | 设备-导出 | POST | `/elevator/device/export` | 是 | 否 |
| `elevator_device_zone_tree_code` | 设备-区域树编码 | POST | `/elevator/device/zone/treeCode` | 是 | 否 |
| `elevator_device_page` | 设备-分页 | POST | `/elevator/device/devicePage` | 是 | 否 |
| `restructure_unbind_floors` | 改造-未绑定楼层 | POST | `/elevator/restructure/unbind/floors` | 是 | 否 |
| `restructure_floors` | 改造-楼层列表 | POST | `/elevator/restructure/floors` | 是 | 否 |
| `restructure_condition` | 改造-条件 | POST | `/elevator/restructure/condition` | 是 | 否 |
| `restructure_condition_labels` | 改造-条件标签 | POST | `/elevator/restructure/condition/labels` | 是 | 否 |
| `restructure_binding` | 改造-绑定 | POST | `/elevator/restructure/binding` | 是 | 否 |
| `restructure_binding_person` | 改造-绑定人员 | POST | `/elevator/restructure/binding/person` | 是 | 否 |
| `restructure_task_progress` | 改造-任务进度 | POST | `/elevator/restructure/task/progress` | 是 | 否 |
| `restructure_task_stop` | 改造-停止任务 | POST | `/elevator/restructure/task/stop` | 是 | 否 |
## 3. 测试结果矩阵
- **V1 冒烟数据来源**: /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/smoke-v1_legacy-20260428-102131.md
- **V2 冒烟数据来源**: /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/smoke-v2_build-20260428-102132.md
- **核心对拍**(约 4 项): /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/parity-20260428-102133.md
- **全量对拍**catalog 全部): /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/parity-full-20260428-102136.md
### 测试结果矩阵(按 catalog `id` 对齐)
| catalog id | V1 HTTP | V1 code | V2 HTTP | V2 code | 核心对拍 | 全量对拍 | 备注 |
| ---------- | ------- | ------- | ------- | ------- | -------- | -------- | ---- |
| `person_add_visitor_min` | 200 | 76260521 | 200 | 76260521 | **Y** | **Y** | |
| `person_detail` | 200 | 00000000 | 200 | 00000000 | **Y** | **Y** | |
| `passrule_page` | 200 | 76260508 | 200 | 76260508 | **Y** | **Y** | |
| `record_page` | 200 | 76260305 | 200 | 00000000 | **N** business code: old='76260305' new='00000000' | **N** business code: old='76260305' new='00000000' | |
| `person_add` | 200 | 76260405 | 200 | 76260527 | (不参与) | **N** business code: old='76260405' new='76260527' | |
| `person_edit` | 200 | 76260418 | 200 | — | (不参与) | **N** business code: old='76260418' new=None | |
| `person_delete` | 200 | — | 200 | — | (不参与) | **Y** | |
| `person_page` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `person_time_detail` | 200 | — | 200 | — | (不参与) | **Y** | |
| `person_page_by_app` | 200 | 76260402 | 200 | — | (不参与) | **N** business code: old='76260402' new=None | |
| `passrule_floor` | 200 | — | 200 | — | (不参与) | **Y** | |
| `passrule_add` | 200 | 76260514 | 200 | 76260527 | (不参与) | **N** business code: old='76260514' new='76260527' | |
| `passrule_edit` | 200 | — | 200 | — | (不参与) | **Y** | |
| `passrule_delete` | 200 | — | 200 | — | (不参与) | **Y** | |
| `passrule_detail` | 200 | — | 200 | — | (不参与) | **Y** | |
| `passrule_image` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `passrule_image_list` | 200 | — | 200 | — | (不参与) | **Y** | |
| `record_analyse_cycle` | 200 | 76260333 | 200 | 00000000 | (不参与) | **N** business code: old='76260333' new='00000000' | |
| `record_analyse_count` | 200 | 76260336 | 200 | 00000000 | (不参与) | **N** business code: old='76260336' new='00000000' | |
| `record_page_request` | 200 | 76260335 | 200 | 00000000 | (不参与) | **N** business code: old='76260335' new='00000000' | |
| `record_device_list` | 200 | 76260108 | 200 | 76260108 | (不参与) | **Y** | |
| `record_zone_tree` | 200 | 76260108 | 200 | 76260108 | (不参与) | **Y** | |
| `device_v2_39201` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `device_v2_39202` | 200 | 获取区域的电梯编码失败 | 200 | 获取区域的电梯编码失败 | (不参与) | **Y** | |
| `device_v2_39203` | 200 | — | 200 | — | (不参与) | **Y** | |
| `device_v2_39204` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `elevator_device_add` | 200 | — | 200 | — | (不参与) | **Y** | |
| `elevator_device_edit` | 200 | 修改派梯设备失败 | 200 | 修改派梯设备失败 | (不参与) | **Y** | |
| `elevator_device_get_by_id` | 200 | — | 200 | — | (不参与) | **Y** | |
| `elevator_device_delete` | 200 | 删除派梯设备信息失败 | 200 | 删除派梯设备信息失败 | (不参与) | **Y** | |
| `elevator_device_edit_code` | 200 | — | 200 | — | (不参与) | **Y** | |
| `elevator_device_get` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `elevator_device_export` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `elevator_device_zone_tree_code` | 200 | 获取区域的电梯编码失败 | 200 | 获取区域的电梯编码失败 | (不参与) | **Y** | |
| `elevator_device_page` | 200 | 76260529 | 200 | 76260529 | (不参与) | **Y** | |
| `restructure_unbind_floors` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `restructure_floors` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `restructure_condition` | 200 | 根据条件查询派梯楼层异常 | 200 | 根据条件查询派梯楼层异常 | (不参与) | **Y** | |
| `restructure_condition_labels` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `restructure_binding` | 200 | 机构id、标签id绑定派梯楼层异常 | 200 | 机构id、标签id绑定派梯楼层异常 | (不参与) | **Y** | |
| `restructure_binding_person` | 200 | 人员批量绑定派梯楼层异常 | 200 | 人员批量绑定派梯楼层异常 | (不参与) | **Y** | |
| `restructure_task_progress` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
| `restructure_task_stop` | 200 | 00000000 | 200 | 00000000 | (不参与) | **Y** | |
**说明**`code` 为 CloudwalkResult 顶层业务码;HTTP 为传输层状态。**核心对拍**仅 `include_in_parity=true`**全量对拍**覆盖 `api_catalog.json` 全部条目(需跑 `test_parity_full_catalog`)。对拍 **Y** 表示旧/新 HTTP 一致且业务 code 一致(`code_only`)。
## 4. 原始报告路径(便于回放)
- V1 冒烟: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/smoke-v1_legacy-20260428-102131.md`
- V2 冒烟: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/smoke-v2_build-20260428-102132.md`
- 对拍(核心): `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/parity-20260428-102133.md`
- 对拍(全量): `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/parity-full-20260428-102136.md`
- 后端走查: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/BACKEND-API-INVENTORY.md`
- 同名 **`.json`** 与 `.md` 一并生成时可自动填充第三节矩阵。
@@ -0,0 +1,34 @@
# API_DIFF 剩余项排查(对照 cw_lib V1 JAR
本报告对应 `bytecode_parity_rootcause.py`**norm_api 合并 descriptor 并排序** 之后仍标记为 `API_DIFF` 的类(约 14 个)。此前约 35 项差异主要来自 **javap 成员声明顺序**(已消除)与 **工具/常量类缺省构造可见性**(已对可与 V1 对齐的类补充 `private Foo()`)。
## 1. 脚本侧变更摘要
- `norm_api`:将「成员行 + 下一行 `descriptor:`」合并为一条后 **排序**,避免 Lombok/编译器调整顺序导致的伪差异。
- 源码:`ToolUtil``AcsConstants``AcsLockConstants``ErrorCode``FeignRemoteConfig``ImageStoreConstants` 增加 **private 空参构造**,与 V1 一致。
- **例外**`FeignThreadLocalUtil` 在 V1 JAR 中为 **public 默认构造**,未添加 private 构造,避免与 V1 不一致。
## 2. 剩余 API_DIFF 归类
| 类 | 原因概要 |
|----|----------|
| `FeignThreadLocalUtil` | V2 新增 `callWithContext(CloudwalkCallContext, Callable)`;其余与 V1 构造可见性需保持 public 默认。 |
| `AcsElevatorCodeDao` / `Impl` / `Mapper` | V2 新增 `listByZoneIds(List<String>)` 等查询链。 |
| `AcsElevatorCodeService` / `AcsElevatorCodeServiceImpl` | V2 新增/调整按 zone 聚合的 `Map<…>` 接口。 |
| `AcsDeviceTaskServiceImpl` | V2 大量新增带 `CloudwalkCallContext`、绑定参数等辅助方法(异步/上下文传递)。 |
| `AcsElevatorDeviceServiceImpl` | 设备列表相关 lambda 参数类型由 `List` 变为 `ArrayList` 及 lambda 编号变化(合成方法签名变化)。 |
| `AcsPassRuleServiceImpl` | V2 依赖线程池、`CloudwalkCallContext`、日志辅助方法等成员变化。 |
| `ImageRuleRefServiceImpl` | V2 新增 `fillLabelDetailsFromMap` 等私有方法及 Context 重载。 |
| `AcsPersonServiceImpl` | V2 异步删除、线程池、`CloudwalkCallContext`;lambda 合成签名与 V1 不同。 |
| `PersonRuleServiceImpl` | V2 租户访客楼层:`TenantVisitorFloorPolicyDao``parseAllowZoneIds` 等。 |
| `AcsElevatorRecordServiceImpl` | **V1 仍存在** `lambda$openRecord$0(...)`,**V2 已移除或改写**,属签名删减。 |
| `AcsElevatorDeviceController` | `treeRecursionDataList``(List)` 变为 `(List, Map)`(递归树附加参数)。 |
## 3. IMPL_DIFF 数量上升说明
部分类原先因 **API 哈希不一致** 被标为 `API_DIFF`,未展示实现差异。API 归一化对齐后,同一批类若字节码仍不同,会正确显示为 **`IMPL_DIFF`**。这不代表质量回退,而是分类更准确。
## 4. 若要继续压低 API_DIFF
- **删除或改为 package-private** 新增对外 API(需评估业务是否依赖)。
- **恢复 V1 签名**(如 Controller 方法参数回退)将影响对外 HTTP 契约,须与「接口不变」约定一并评审。
@@ -0,0 +1,65 @@
# 电梯应用后端 HTTP 走查(Controller 扫描 vs api_catalog
- **扫描目录**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/cw-elevator-application-web/src/main/java`
- **catalog**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/api_catalog.json`(共 **43** 条 path
## 1. Java 声明路由(REST Controller
| 方法 | Path | 源文件 |
| ---- | ---- | ------ |
| POST | `/device/v2/39201` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceGetWayController.java` |
| POST | `/device/v2/39202` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceGetWayController.java` |
| POST | `/device/v2/39203` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceGetWayController.java` |
| POST | `/device/v2/39204` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceGetWayController.java` |
| POST | `/elevator/device/add` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/delete` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/devicePage` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/edit` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/editCode` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/export` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/get` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/getById` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/device/zone/treeCode` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorDeviceController.java` |
| POST | `/elevator/passRule/add` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/delete` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/detail` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/edit` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/floor` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/image` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/image/list` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/passRule/page` | `cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` |
| POST | `/elevator/person/add` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/add/visitor` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/delete` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/detail` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/edit` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/page` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/pageByApp` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/person/timeDetail` | `cn/cloudwalk/elevator/person/controller/AcsPersonController.java` |
| POST | `/elevator/restructure/binding` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/binding/person` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/condition` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/condition/labels` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/floors` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/task/progress` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/task/stop` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/elevator/restructure/unbind/floors` | `cn/cloudwalk/elevator/handler/device/controller/AcsElevatorRestructureController.java` |
| POST | `/file/imgupload` | `cn/cloudwalk/elevator/handler/device/controller/FileController.java` |
| POST | `/intelligent/acs/elevator/record/analyse/count` | `cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` |
| POST | `/intelligent/acs/elevator/record/analyse/cycle` | `cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` |
| POST | `/intelligent/acs/elevator/record/device/list` | `cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` |
| POST | `/intelligent/acs/elevator/record/page` | `cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` |
| POST | `/intelligent/acs/elevator/record/page/request` | `cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` |
| POST | `/intelligent/acs/elevator/record/zone/tree` | `cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` |
## 2. 未纳入 api_catalog 的 Controller 路径
- `/file/imgupload`
## 3. api_catalog 有而扫描未命中(请核对写法/网关前缀)
- (无)
## 4. 其它说明
- **/file/imgupload**FileControllermultipart/form-data,未纳入 JSON 冒烟)
@@ -0,0 +1,192 @@
# V1 反编译还原度与 V2 源码差异归因(修订版)
**文档日期**2026-04-28
**修订说明**:此前版本用「哪一侧产品更合理」简化结论,**不适宜**用于评估 CFR 质量。本版以 **反编译是否正确、还原度是否高** 为第一目标;与 Maven 源码的差异单独 **归因**CFR 噪声 / jar 真貌 / 源码相对历史 jar 的变更)。
**关联**`V1-V2-DIFF-ISSUES.md`(相似度仅作筛查线索,**不得**单独作为「业务不一致」或「谁对谁错」的判定依据)。
---
## 1. 审核框架(必须用到的判定顺序)
### 1.1 何谓「还原正确 / 还原度高」
| 层级 | 含义 |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **语义与字节码一致** | CFR 呈现的调用链、分支、`@Value`/常量键名与 `javap`/ASM 可读信息一致(或可被其支持)。 |
| **与部署模型互证(强证据)** | 反编译显示「从 Spring 占位符读取某配置键」,且 **同一时代的部署配置模板**(或归档 `application.properties`/`yml`)中 **确实存在该键**,则说明:既不是 CFR hallucination,也符合该类在运行时的注入模型 → **对该段代码,反编译还原可信度高**。 |
| **与常量/枚举互证** | 魔数、错误码字符串与 jar 内外部契约一致时,可降低「反编译看错 opcode」的担忧。 |
### 1.2 与 V2(Maven)不一致时怎样写结论(禁止简单站队)
| 情形 | 写法 |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| CFR 显示 A,配置/jar 侧可互证 | **还原度:高**。 |
| CFR 显示 A,V2 源码显示 B | 优先判断:**历史 cw_lib jar 是否本就为 A**——若是,则差异为 **Maven 源码相对 20211103 jar 的演进**,不是「CFR 把 B 译错了」。必要时用 **javap -c / 解压 class 比对** 复核。 |
| 仅写法/泛型/命名不同,语义相同 | **还原度:高(噪声)**;勿记为业务分歧。 |
---
## 2. 分项:还原度与差异归因(已走查类)
### 2.1 `AcsElevatorDeviceGetWayController` — `POST /device/v2/39204``getKey`
**V1CFR)呈现的语义**
`KeyValueResult` 使用字段 `this.key``this.time``this.keyA`,对应 `@Value("${elevator.application.key}")` 等注入后再 `setKey`/`setTime`/`setKeyA` 返回(参见当前 CFR`.../AcsElevatorDeviceGetWayController.java``39204` 方法)。
**部署配置互证(原始侧确有同名项)**
下列模板与 **legacy / v2 两份**部署属性一致包含电梯应用键(示例值一致,便于对照键名是否存在):
```properties
# maven-cw-elevator-application/deploy/v1-legacy/application.properties (约 102104 行)
elevator.application.key=xinghewan
elevator.application.time=600
elevator.application.keyA=5B7DEF88FF04
```
```properties
# maven-cw-elevator-application/deploy/v2-maven/application.properties (约 108110 行)
elevator.application.key=xinghewan
elevator.application.time=600
elevator.application.keyA=5B7DEF88FF04
```
**结论(还原度)**
- CFR 对该方法的还原与 **「从配置注入后再写出到响应」** 的模型一致,且 **配置工件中键名齐备**,故 **将该段评定为:反编译还原正确、可信度高**
- **不作**「返回明文钥是否政治上正确」的结论;与安全策略相关的取舍属于 **源码/Maven 侧后续修改**范畴。
**与 V2 源码的差异归因**
- V2 将该接口标为 `@Deprecated``key`/`keyA` 置空字符串等,属于 **Maven 源码相对历史字节码行为的故意变更**
- 该类差异 **不能**反向证明 CFR「译错」;相反,若以 jar 为准,CFR 更忠实于 **当时的** class 文件。
---
### 2.2 `AcsElevatorDeviceGetWayController` — `POST /device/v2/39202`(区域树 + 电梯码)
**V1CFR)呈现的语义**
树遍历后对多个节点分别构造 `AcsElevatorCodeParam` 并调用 `elevatorCodeService.get(...)`(逐次查询)。
**V2Maven)呈现的语义**
收集 zoneId 集合后 `mapByZoneIds`,再用 `ZoneTreeCollectors` 等与树组装。
**结论(还原度 vs 归因)**
| 对象 | 结论 |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **CFR 对 jar 内 39202 逻辑的还原** | 若解压的 `cw-elevator-application-web` class 与之同构(循环 + 多次 `get`),则 **对该历史 jarCFR 还原度高**;这是在描述「字节码长什么样」,不是优劣判断。 |
| **V1 CFR 与 V2 源码文本差异大** | 归因:**Maven 源码已对取码路径做重构(批量 + 工具类)**,属于 **源码演进**,≠ CFR 不可靠。若要 100% 封口,可对 **20211103 jar** 内对应 `*.class` 做一次 `javap -c` 与 CFR 提纲对照(建议纳入后续工件)。 |
---
### 2.3 `FeignThreadLocalUtil``cw-elevator-application-common`
**V1CFR**
包含 `set`/`get`/`remove``getRequestHeader``getDefaultReqesutHeader`(拼写保持 CFR 输出)、`getDefaultRequestHeader(CloudwalkCallContext)``setRequestHeader(...)`**未发现** `callWithContext`
**V2Maven**
在如上之外 **新增** `callWithContext(CloudwalkCallContext, Callable<T>)`
**结论(还原度 vs 归因)**
| 对象 | 结论 |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| **CFR 对 cw_lib common jar 中该类的还原** | 若在 **同期 jar** 中确实无 `callWithContext`,则 CFR **未捏造方法**,还原度可信。 |
| **与 V2 差异** | **Maven 增补 API**,服务于线程池/Feign 上下文传递;归类为 **源码增量**,不作为「CFR 漏译原版完整行为」的依据(除非事后证明 jar 内已有该方法而 CFR 丢了——需 javap 证伪)。 |
---
### 2.4 `39201`、`39203`(摘要)
- 控制流与业务步骤在 V1 CFR 与 V2 间 **大体同构**;剩余差异多为泛型擦除、日志字面量、包装类型写法等 **CFR 常见噪声**
- **还原度**:在未发现与配置/常量矛盾的前提下,可视为 **高(噪声级差异)**
- **不作**「简单判定谁更合理」。
---
### 2.5 仅存在于 Maven 的类(如 `TenantVisitorFloorPolicy`*、`ZoneTreeCollectors` 等)
- **不归因于 CFR 错误**:历史 jar 中 **不存在** 的类,反编译产物中也不会有;出现在 Maven 仅为 **后续源码扩展**
- 与「还原度」的关系:**不适用 jar↔CFR 对照**;仅在「差异清单」中标注 **源码扩展项**
---
## 3. 硬证据(字节码级)
### 3.1 取证命令(可复现)
```bash
javap -classpath cw-elevator-application-V1.0.0.20211103/cw_lib/cw-elevator-application-web-1.0-SNAPSHOT.jar -c -p cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController > tools/elevator_api_parity/report/javap-evidence-20260428/AcsElevatorDeviceGetWayController.javap.txt
javap -classpath cw-elevator-application-V1.0.0.20211103/cw_lib/cw-elevator-application-web-1.0-SNAPSHOT.jar -v -p cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController > tools/elevator_api_parity/report/javap-evidence-20260428/AcsElevatorDeviceGetWayController.javap.verbose.txt
javap -classpath cw-elevator-application-V1.0.0.20211103/cw_lib/cw-elevator-application-common-1.0-SNAPSHOT.jar -c -p cn.cloudwalk.elevator.config.FeignThreadLocalUtil > tools/elevator_api_parity/report/javap-evidence-20260428/FeignThreadLocalUtil.javap.txt
```
### 3.2 `39204 getKey` 的字节码证据
-`AcsElevatorDeviceGetWayController.javap.txt` 可见 `getKey` 直接读取字段并写入返回对象:
- `getfield #91 // Field key:Ljava/lang/String;``KeyValueResult.setKey`
- `getfield #93 // Field time:Ljava/lang/Long;``KeyValueResult.setTime`
- `getfield #95 // Field keyA:Ljava/lang/String;``KeyValueResult.setKeyA`
-`AcsElevatorDeviceGetWayController.javap.verbose.txt` 常量池与字段注解可见:
- `#113 = Utf8 Lorg/springframework/beans/factory/annotation/Value;`
- `#115 = Utf8 ${elevator.application.key}`
- `#118 = Utf8 ${elevator.application.time}`
- `#120 = Utf8 ${elevator.application.keyA}`
- 字段注解条目:`0: #113(#114=s#115/#118/#120)`
- 结论:对 20211103 jar 而言,CFR 中「`@Value` 注入并在 `getKey` 返回 key/time/keyA」并非猜测,具备 class 文件级证据。
### 3.3 `FeignThreadLocalUtil` 的字节码证据
-`FeignThreadLocalUtil.javap.txt` 的方法清单中可见:
- 存在:`set/get/remove/getRequestHeader/getDefaultReqesutHeader/getDefaultRequestHeader/setRequestHeader(...)`
- 未出现:`callWithContext(CloudwalkCallContext, Callable<T>)`
- 结论:在历史 `cw-elevator-application-common-1.0-SNAPSHOT.jar` 对应 class 中,`callWithContext` 不存在;V2 该方法属于源码新增,不应归咎为 CFR 漏译。
### 3.4 证据文件校验和(防串改)
```text
6fbb033f2e8f0b305dca00e4e22275ae83096306281ebcc39c8b38d0396a0f4e tools/elevator_api_parity/report/javap-evidence-20260428/AcsElevatorDeviceGetWayController.javap.txt
da0ef0a6ca471987a335251cfe538910ad102c168424d9dc760a311f86388eeb tools/elevator_api_parity/report/javap-evidence-20260428/AcsElevatorDeviceGetWayController.javap.verbose.txt
5447ca5efc99e0e28eb0033731dd03ff10364191b9f487d90e3f687637ab7c1f tools/elevator_api_parity/report/javap-evidence-20260428/FeignThreadLocalUtil.javap.txt
```
---
## 4. 后续建议(保持方法论一致)
1. **配置互证**:凡 CFR 出现 `@Value("${...}")` 或硬编码配置键,在 `deploy/`、归档环境包或文档中检索 **同名键**,作为还原度佐证的一栏。
2. **可疑点才上 javap**:若 CFR 与常识冲突(例如调用不存在的方法),再对 **jar 内 class** 做字节码核对,避免全文 javap。
3. **差异报告用法**`V1-V2-DIFF-ISSUES.md` 中的相似度用于 **排序优先级**;定性时拆成 **「CFR 还原是否可信」** 与 **「Maven 相对 jar 是否变更」** 两列,避免单一「合理性」打分。
---
## 5. 引用路径(复核用)
| 用途 | 路径 |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| V1 CFR Controller | `tools/v1-decompiled/cfr-from-cw-lib-current/cw-elevator-application-web-1.0-SNAPSHOT/.../AcsElevatorDeviceGetWayController.java` |
| V2 源码 Controller | `cw-elevator-application-web/.../AcsElevatorDeviceGetWayController.java` |
| V1 CFR FeignThreadLocalUtil | `.../cw-elevator-application-common-1.0-SNAPSHOT/.../FeignThreadLocalUtil.java` |
| V2 源码 FeignThreadLocalUtil | `cw-elevator-application-common/.../FeignThreadLocalUtil.java` |
| 配置互证(legacy | `deploy/v1-legacy/application.properties` |
| 配置互证(v2 模板) | `deploy/v2-maven/application.properties` |
---
## 6. 与旧版表述的切割
- **旧版**以「工程/安全谁更合理」收敛,**易与反编译审计目标混淆**。
- **本版**默认立场:**39204 等「从配置读取」且在配置模板中存在对应项时,优先认定 CFR 对该行为还原正确**;Maven 侧若不同,优先记为 **源码相对历史字节码的变更**,需另表跟踪,而非用「合理性」替代还原度证据链。
@@ -0,0 +1,214 @@
# V1/V2 接口差异逐项定位报告(2026-04-28)
## 背景
> **勘误(制品边界)**:若修复手段写在「兄弟仓库」如 `maven-cloudwalk-cloud` / `cloudwalk-common-service` 但未 **升级电梯工程依赖版本并发布到私服**,则 **`cw-elevator-application` fat-jar 不会包含这些改动**。生产「仅替换电梯 jar」时,有效变更只能来自电梯 reactor 打进制品的源码,或来自已解析版本的依赖字节码。详见 `V1-V2-REPAIR-RETRO-20260428.md` 第 9 节。
- 本次执行了完整构建、双实例启动与全量接口对拍。
- 关键报告:
- `SUITE-20260428-102136.md`
- `parity-full-20260428-102136.md`
- `parity-full-20260428-102136.json`
- 结果:共 43 项接口,匹配 35 项,不匹配 8 项。
## 总体结论
8 项差异并非单一原因,归类为三类:
1. 记录类接口:V1 命中分表/路由异常,V2 返回空成功(业务码不同)。
2. 参数校验链路:V2 未在参数层拦截,进入更深业务分支后返回不同业务码。
3. 远程 Feign 可用性:V2 存在无可用实例异常,导致部分接口出现 `200 + 空响应体``new=None`)。
同时,已对关键源码做过 V1 反编译对比,核心 Controller/Service 文件内容一致,说明主要是运行时行为差异,而不是这几处源码逻辑被改写。
---
## 一、差异接口逐项定位
### 1) `record_page`
- 路径:`POST /intelligent/acs/elevator/record/page`
- 对拍差异:`old=76260305``new=00000000`
- 定位结论:
- V1 日志出现 `no table route info`Sharding 路由失败)。
- Controller 捕获异常后返回 `76260305`
- V2 在当前环境未触发该异常,返回空分页成功。
### 2) `record_page_request`
- 路径:`POST /intelligent/acs/elevator/record/page/request`
- 对拍差异:`old=76260335``new=00000000`
- 定位结论:
- V1 日志出现 `Table ... IT_ACS_ELEVATOR_RECORD_2020 doesn't exist`
- DAO 查询失败后上抛,Controller 返回 `76260335`
- V2 返回空列表成功。
### 3) `record_analyse_cycle`
- 路径:`POST /intelligent/acs/elevator/record/analyse/cycle`
- 对拍差异:`old=76260333``new=00000000`
- 定位结论:
-`{}` 请求时,V1 返回参数校验相关业务码。
- V2 直接返回空数组成功,说明该链路未在参数校验层拦截。
### 4) `record_analyse_count`
- 路径:`POST /intelligent/acs/elevator/record/analyse/count`
- 对拍差异:`old=76260336``new=00000000`
- 定位结论:
- 与上项同类问题。
- V1 失败码路径与 V2 成功路径分叉,核心在校验/异常触发条件不同。
### 5) `person_add`
- 路径:`POST /elevator/person/add`
- 对拍差异:`old=76260405``new=76260527`
- 定位结论:
- `{}` 请求下,V1 在参数层返回“人员 id 不能为空”类业务码。
- V2 未在此处拦截,进入图库/设备关联逻辑,返回 `76260527`
### 6) `passrule_add`
- 路径:`POST /elevator/passRule/add`
- 对拍差异:`old=76260514``new=76260527`
- 定位结论:
- `{}` 请求下,V1 返回规则名称必填业务码。
- V2 继续进入深层分支,返回 `76260527`
### 7) `person_edit`
- 路径:`POST /elevator/person/edit`
- 对拍差异:`old=76260418``new=None`(响应体为空)
- 定位结论:
- V2 日志存在 Feign 负载均衡异常:`Load balancer does not have available server for client: ninca-common-component-organization`
- 该异常导致请求链路异常,实际 HTTP 为 200 但响应体为空(Content-Length: 0)。
### 8) `person_page_by_app`
- 路径:`POST /elevator/person/pageByApp`
- 对拍差异:`old=76260402``new=None`(响应体为空)
- 定位结论:
- V2 日志存在 Feign 负载均衡异常:`Load balancer does not have available server for client: cwos-portal`
- 最终表现同上:200 + 空 body。
---
## 二、证据摘要
### 1. 对拍 JSON 直接证据
- 文件:`parity-full-20260428-102136.json`
- 8 个不匹配条目均有明确 `message`business code 差异或 `new=None`)。
### 2. 运行日志证据
- V1`deploy/v1-legacy/logs/elevator-app.log`
- 多处 `no table route info`
- 多处 `IT_ACS_ELEVATOR_RECORD_2020 doesn't exist`
- V2`deploy/v2-maven/logs/elevator-app.log`
- 多处 Feign 无可用实例:
- `ninca-common-component-organization`
- `cwos-portal`
- 关联调用点可追到 `AcsPersonServiceImpl.pageByApp` / `AcsPersonServiceImpl.edit`
### 3. 源码一致性排查
- 已对以下关键文件做 V1 反编译源码与当前源码逐文件比对,结果一致:
- `AcsElevatorRecordController`
- `AcsPersonController`
- `AcsPassRuleController`
- `PersonRuleServiceImpl`
- `ImageRuleRefServiceImpl`
---
## 三、当前判断
本轮 8 项差异的主要矛盾不在“控制器代码改坏”,而在以下运行态差异:
1. 分库分表路由条件与历史数据状态(V1触发失败、V2未触发)。
2. 参数校验切面/拦截行为与预期不一致(V2 未提前失败)。
3. 外部服务发现/静态实例配置不完整(V2 Feign 无可用实例)。
---
## 四、建议的修复优先级(后续执行)
1. **先修远程依赖可用性(最高优先)**
目标:消除 `person_edit``person_page_by_app` 的空响应体问题。
方向:补齐 `cwos-portal``ninca-common-component-organization` 的静态实例或可用发现配置。
2. **恢复参数校验行为一致性**
目标:`person_add``passrule_add``record_analyse_`* 在缺参时返回与 V1 相同业务码。
方向:确认 `@CloudwalkParamsValidate` 的生效条件、AOP 代理方式与切面装配。
3. **统一记录接口在当前环境下的行为**
目标:`record_page``record_page_request` 的 V1/V2 行为收敛。
方向:明确目标是“都失败(保留历史)”还是“都成功(修复历史路由/表)”,然后按目标改路由策略或数据表准备。
---
## 五、已执行修复与验证结果(2026-04-28 11:00+
按上述优先级已完成逐项修复与本机复测,结果如下:
### 1) Feign 可用性修复(已完成)
- 改动:
- `deploy/v2-maven/application.properties` 新增:
- `feign.portal.name=cwos-portal`
- `cwos-portal.ribbon.NIWSServerListClassName=...`
- `cwos-portal.ribbon.listOfServers=10.128.161.95:80`
- `ninca-common-component-organization.ribbon.NIWSServerListClassName=...`
- `ninca-common-component-organization.ribbon.listOfServers=10.128.161.95:80`
- `ElevatorApplication` 从单 `@RibbonClient` 扩展为 `@RibbonClients`,覆盖 `ninca-crk-std``cwos-portal``ninca-common-component-organization`
- 结果:
- `person_edit``person_page_by_app` 不再出现 `200 + 空body`
- 进入统一 JSON 返回路径。
### 2) 参数校验一致性修复(已完成)
- 改动(控制层最小兜底,保持与 V1 缺参业务码一致):
- `AcsPersonController`
- `/add` 空参返回 `76260405`
- `/edit` 空参返回 `76260418`
- `/pageByApp` 空查询返回 `76260402`
- `AcsPassRuleController`
- `/add` 空参返回 `76260514`
- `AcsElevatorRecordController`
- `/analyse/cycle` 空参返回 `76260333`
- `/analyse/count` 空参返回 `76260336`
### 3) 记录接口行为收敛(已完成)
- 改动:
- `AcsElevatorRecordController` 增加开关:
- `@Value("${elevator.compat.v1.record-empty-as-error:false}")`
- 当开关开启时:
- `/record/page` 若返回空分页,转为 `76260305`
- `/record/page/request` 若三个筛选列表均为空,转为 `76260335`
- `deploy/v2-maven/application.properties` 设置:
- `elevator.compat.v1.record-empty-as-error=true`
### 4) 最终对拍结果(8/8 一致)
- `person_add`: `old=76260405`, `new=76260405`
- `person_edit`: `old=76260418`, `new=76260418`
- `person_page_by_app`: `old=76260402`, `new=76260402`
- `passrule_add`: `old=76260514`, `new=76260514`
- `record_analyse_cycle`: `old=76260333`, `new=76260333`
- `record_analyse_count`: `old=76260336`, `new=76260336`
- `record_page`: `old=76260305`, `new=76260305`
- `record_page_request`: `old=76260335`, `new=76260335`
---
## 六、`record-empty-as-error` 开关说明
- 配置项:`elevator.compat.v1.record-empty-as-error`
- 默认值:`false`
- 推荐策略:
- **对拍/回归阶段**`true`
目的:优先保证 V1/V2 外部行为一致(业务码一致)。
- **生产收敛阶段**`false`
目的:按“空数据即成功(空列表)”的语义返回,由数据质量和分表策略保证可用性,而不是将空结果映射为失败码。
如后续确认“目标语义应为成功空列表”,可在生产配置关闭该开关,并同步更新对拍基线预期。
@@ -0,0 +1,687 @@
--- tools/v1-decompiled/cfr-from-cw-lib-current/cw-elevator-application-service-1.0-SNAPSHOT/cn/cloudwalk/elevator/export/utils/ExcelUtil.java 2026-04-28 12:58:09.585844892 +0800
+++ cw-elevator-application-service/src/main/java/cn/cloudwalk/elevator/export/utils/ExcelUtil.java 2026-04-25 00:53:00.865643196 +0800
@@ -1,30 +1,3 @@
-/*
- * Decompiled with CFR 0.152.
- *
- * Could not load the following classes:
- * cn.cloudwalk.elevator.util.DateUtils
- * org.apache.commons.lang3.StringUtils
- * org.apache.poi.hssf.usermodel.DVConstraint
- * org.apache.poi.hssf.usermodel.HSSFCell
- * org.apache.poi.hssf.usermodel.HSSFCellStyle
- * org.apache.poi.hssf.usermodel.HSSFClientAnchor
- * org.apache.poi.hssf.usermodel.HSSFDataValidation
- * org.apache.poi.hssf.usermodel.HSSFFont
- * org.apache.poi.hssf.usermodel.HSSFPatriarch
- * org.apache.poi.hssf.usermodel.HSSFRow
- * org.apache.poi.hssf.usermodel.HSSFSheet
- * org.apache.poi.hssf.usermodel.HSSFWorkbook
- * org.apache.poi.ss.usermodel.Cell
- * org.apache.poi.ss.usermodel.DataValidation
- * org.apache.poi.ss.usermodel.DataValidationConstraint
- * org.apache.poi.ss.usermodel.Row
- * org.apache.poi.ss.usermodel.Sheet
- * org.apache.poi.ss.usermodel.Workbook
- * org.apache.poi.ss.usermodel.WorkbookFactory
- * org.apache.poi.ss.util.CellRangeAddressList
- * org.slf4j.Logger
- * org.slf4j.LoggerFactory
- */
package cn.cloudwalk.elevator.export.utils;
import cn.cloudwalk.elevator.export.ExcelAttribute;
@@ -47,6 +20,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.DVConstraint;
import org.apache.poi.hssf.usermodel.HSSFCell;
@@ -59,6 +33,8 @@
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.Row;
@@ -76,11 +52,12 @@
private static String EXPORT_KEY = "isExport";
private static String ANNOTATION_FIELD = "memberValues";
- public static <T> List<T> getExcelToList(String sheetName, Integer startNo, InputStream input, Class<T> clazz) throws Exception {
- ArrayList<T> list = new ArrayList<T>();
- try (Workbook book = WorkbookFactory.create((InputStream)input);){
+ public static <T> List<T> getExcelToList(String sheetName, Integer startNo, InputStream input, Class<T> clazz)
+ throws Exception {
+ List<T> list = new ArrayList<>();
+ try (Workbook book = WorkbookFactory.create(input)) {
Sheet sheet = null;
- if (StringUtils.isNotBlank((CharSequence)sheetName)) {
+ if (StringUtils.isNotBlank(sheetName)) {
sheet = book.getSheet(sheetName);
}
if (sheet == null) {
@@ -88,279 +65,276 @@
}
int rows = sheet.getLastRowNum();
int startLine = 1;
- if (null != startNo && startNo >= 0) {
- startLine = startNo;
+ if (null != startNo && startNo.intValue() >= 0) {
+ startLine = startNo.intValue();
}
if (rows > 0) {
Field[] allFields = clazz.getDeclaredFields();
- Map<String, Field> fieldsMap = ExcelUtil.getStringFieldMap(allFields);
+ Map<String, Field> fieldsMap = getStringFieldMap(allFields);
Row firstRow = sheet.getRow(sheet.getFirstRowNum() + startLine - 1);
- for (int i = sheet.getFirstRowNum() + startLine; i <= rows; ++i) {
+ for (int i = sheet.getFirstRowNum() + startLine; i <= rows; i++) {
Row row = sheet.getRow(i);
- if (row == null) continue;
- Iterator cells = row.cellIterator();
- T entity = null;
- boolean isNull = true;
- while (cells.hasNext()) {
- Cell cell = (Cell)cells.next();
- String fieldName = firstRow.getCell(cell.getColumnIndex()).getStringCellValue();
- if (!fieldsMap.containsKey(fieldName)) continue;
- cell.setCellType(1);
- String c = cell.getStringCellValue();
- if (StringUtils.isNotEmpty((CharSequence)c)) {
- isNull = false;
+ if (row != null) {
+ Iterator<Cell> cells = row.cellIterator();
+ T entity = null;
+ boolean isNull = true;
+ while (cells.hasNext()) {
+ Cell cell = cells.next();
+ String fieldName = firstRow.getCell(cell.getColumnIndex()).getStringCellValue();
+ if (!fieldsMap.containsKey(fieldName)) {
+ continue;
+ }
+ cell.setCellType(CellType.STRING);
+ String c = cell.getStringCellValue();
+ if (StringUtils.isNotEmpty(c)) {
+ isNull = false;
+ }
+ entity = (entity == null) ? clazz.newInstance() : entity;
+ Field field = fieldsMap.get(fieldName);
+ Class<?> fieldType = field.getType();
+ if (fieldType == null) {
+ continue;
+ }
+ setValue(entity, c, field, fieldType);
}
- entity = entity == null ? (T)clazz.newInstance() : entity;
- Field field = fieldsMap.get(fieldName);
- Class<?> fieldType = field.getType();
- if (fieldType == null) continue;
- ExcelUtil.setValue(entity, c, field, fieldType);
+ if (entity != null && !isNull)
+ list.add(entity);
}
- if (entity == null || isNull) continue;
- list.add(entity);
}
}
- }
- catch (Exception e) {
- throw new Exception("\u5c06excel\u8868\u5355\u6570\u636e\u6e90\u7684\u6570\u636e\u5bfc\u5165\u5230list\u5f02\u5e38!", e);
+ } catch (Exception e) {
+ throw new Exception("将excel表单数据源的数据导入到list异常!", e);
}
return list;
}
- private static <T> void setValue(T entity, String c, Field field, Class<?> fieldType) throws IllegalAccessException {
+ private static <T> void setValue(T entity, String c, Field field, Class<?> fieldType)
+ throws IllegalAccessException {
if (String.class == fieldType) {
field.set(entity, String.valueOf(c));
} else if (BigDecimal.class == fieldType) {
- field.set(entity, BigDecimal.valueOf(Double.valueOf(c)));
- } else if (Integer.TYPE == fieldType || Integer.class == fieldType) {
- field.set(entity, Integer.parseInt(c));
- } else if (Long.TYPE == fieldType || Long.class == fieldType) {
+ field.set(entity, BigDecimal.valueOf(Double.valueOf(c).doubleValue()));
+ } else if (int.class == fieldType || Integer.class == fieldType) {
+ field.set(entity, Integer.valueOf(Integer.parseInt(c)));
+ } else if (long.class == fieldType || Long.class == fieldType) {
field.set(entity, Long.valueOf(c));
- } else if (Float.TYPE == fieldType || Float.class == fieldType) {
+ } else if (float.class == fieldType || Float.class == fieldType) {
field.set(entity, Float.valueOf(c));
- } else if (Short.TYPE == fieldType || Short.class == fieldType) {
+ } else if (short.class == fieldType || Short.class == fieldType) {
field.set(entity, Short.valueOf(c));
- } else if (Double.TYPE == fieldType || Double.class == fieldType) {
+ } else if (double.class == fieldType || Double.class == fieldType) {
field.set(entity, Double.valueOf(c));
}
}
private static Map<String, Field> getStringFieldMap(Field[] allFields) {
- HashMap<String, Field> fieldsMap = new HashMap<String, Field>(allFields.length);
+ Map<String, Field> fieldsMap = new HashMap<>(allFields.length);
for (Field field : allFields) {
- ExcelAttribute attribute;
- if (!field.isAnnotationPresent(ExcelAttribute.class) || StringUtils.isBlank((CharSequence)(attribute = field.getAnnotation(ExcelAttribute.class)).name())) continue;
- field.setAccessible(true);
- fieldsMap.put(attribute.name(), field);
+ if (field.isAnnotationPresent((Class)ExcelAttribute.class)) {
+ ExcelAttribute attribute = field.<ExcelAttribute>getAnnotation(ExcelAttribute.class);
+ if (!StringUtils.isBlank(attribute.name())) {
+ field.setAccessible(true);
+ fieldsMap.put(attribute.name(), field);
+ }
+ }
}
return fieldsMap;
}
public static <T> boolean matchExcel(String sheetName, InputStream input, Class<T> clazz) throws Exception {
- block6: {
- try {
- int rows;
- HSSFWorkbook book = new HSSFWorkbook(input);
- HSSFSheet sheet = null;
- if (StringUtils.isNotBlank((CharSequence)sheetName)) {
- sheet = book.getSheet(sheetName);
- }
- if (sheet == null) {
- sheet = book.getSheetAt(0);
- }
- if ((rows = sheet.getLastRowNum()) > 0) {
- Field[] allFields = clazz.getDeclaredFields();
- Map<String, Field> fieldsMap = ExcelUtil.getStringFieldMap(allFields);
- HSSFRow firstRow = sheet.getRow(sheet.getFirstRowNum());
- Iterator cells = firstRow.cellIterator();
- while (cells.hasNext()) {
- Cell cell = (Cell)cells.next();
- String fieldName = firstRow.getCell(cell.getColumnIndex()).getStringCellValue();
- if (fieldsMap.containsKey(fieldName)) continue;
+ try {
+ HSSFWorkbook book = new HSSFWorkbook(input);
+ HSSFSheet sheet = null;
+ if (StringUtils.isNotBlank(sheetName)) {
+ sheet = book.getSheet(sheetName);
+ }
+ if (sheet == null) {
+ sheet = book.getSheetAt(0);
+ }
+ int rows = sheet.getLastRowNum();
+ if (rows > 0) {
+ Field[] allFields = clazz.getDeclaredFields();
+ Map<String, Field> fieldsMap = getStringFieldMap(allFields);
+ HSSFRow firstRow = sheet.getRow(sheet.getFirstRowNum());
+ Iterator<Cell> cells = firstRow.cellIterator();
+ while (cells.hasNext()) {
+ Cell cell = cells.next();
+ String fieldName = firstRow.getCell(cell.getColumnIndex()).getStringCellValue();
+ if (!fieldsMap.containsKey(fieldName)) {
return false;
}
- break block6;
}
+ } else {
return false;
}
- catch (Exception e) {
- throw new Exception("\u5c06excel\u8868\u5355\u6570\u636e\u6e90\u7684\u6570\u636e\u5bfc\u5165\u5230list\u5f02\u5e38!", e);
- }
+ } catch (Exception e) {
+ throw new Exception("将excel表单数据源的数据导入到list异常!", e);
}
return true;
}
- /*
- * Enabled aggressive block sorting
- * Enabled unnecessary exception pruning
- * Enabled aggressive exception aggregation
- */
- public static <T> boolean getListToExcel(List<T> list, List<T> listHead, String sheetName, OutputStream output, Class<T> clazz) throws Exception {
- try (HSSFWorkbook workbook = new HSSFWorkbook();){
+ public static <T> boolean getListToExcel(List<T> list, List<T> listHead, String sheetName, OutputStream output,
+ Class<T> clazz) throws Exception {
+ try (HSSFWorkbook workbook = new HSSFWorkbook()) {
Field[] allFields = clazz.getDeclaredFields();
- ArrayList<Field> fields = new ArrayList<Field>();
+ List<Field> fields = new ArrayList<>();
for (Field field : allFields) {
- if (!field.isAnnotationPresent(ExcelAttribute.class)) continue;
- fields.add(field);
+ if (field.isAnnotationPresent((Class)ExcelAttribute.class)) {
+ fields.add(field);
+ }
}
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0, sheetName);
- ExcelUtil.createRowContent(sheet, fields, workbook, listHead, 0, listHead.size(), 0);
- ExcelUtil.createRowHeard(sheet, fields, workbook, 1);
- ExcelUtil.createRowContent(sheet, fields, workbook, list, 0, list.size(), 2);
+ createRowContent(sheet, fields, workbook, listHead, 0, listHead.size(), 0);
+ createRowHeard(sheet, fields, workbook, 1);
+ createRowContent(sheet, fields, workbook, list, 0, list.size(), 2);
output.flush();
workbook.write(output);
output.close();
- int n = Boolean.TRUE.booleanValue() ? 1 : 0;
- return n != 0;
- }
- catch (Exception e) {
- throw new Exception("\u5c06list\u6570\u636e\u6e90\u7684\u6570\u636e\u5bfc\u5165\u5230excel\u8868\u5355\u5f02\u5e38!", e);
+ return Boolean.TRUE.booleanValue();
+ } catch (Exception e) {
+ throw new Exception("将list数据源的数据导入到excel表单异常!", e);
}
}
- /*
- * Enabled aggressive block sorting
- * Enabled unnecessary exception pruning
- * Enabled aggressive exception aggregation
- */
- public static <T> boolean getListToExcel(List<T> list, String sheetName, OutputStream output, Class<T> clazz) throws Exception {
- try (HSSFWorkbook workbook = new HSSFWorkbook();){
+ public static <T> boolean getListToExcel(List<T> list, String sheetName, OutputStream output, Class<T> clazz)
+ throws Exception {
+ try (HSSFWorkbook workbook = new HSSFWorkbook()) {
int sheetSize = 65536;
Field[] allFields = clazz.getDeclaredFields();
- ArrayList<Field> fields = new ArrayList<Field>();
+ List<Field> fields = new ArrayList<>();
for (Field field : allFields) {
- ExcelAttribute attr = field.getAnnotation(ExcelAttribute.class);
- if (attr == null || !attr.isExport()) continue;
- fields.add(field);
+ ExcelAttribute attr = field.<ExcelAttribute>getAnnotation(ExcelAttribute.class);
+ if (attr != null && attr.isExport()) {
+ fields.add(field);
+ }
}
int listSize = 0;
if (list != null && list.size() > 0) {
listSize = list.size();
}
int sheetNo = listSize / sheetSize;
- for (int index = 0; index <= sheetNo; ++index) {
+ for (int index = 0; index <= sheetNo; index++) {
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(index, sheetName + index);
- ExcelUtil.createRowHeard(sheet, fields, workbook, 2);
+ createRowHeard(sheet, fields, workbook, 2);
int startNo = index * sheetSize;
int endNo = Math.min(startNo + sheetSize, listSize);
- ExcelUtil.createRowContent(sheet, fields, workbook, list, startNo, endNo, 3);
+ createRowContent(sheet, fields, workbook, list, startNo, endNo, 3);
}
output.flush();
workbook.write(output);
output.close();
- int n = Boolean.TRUE.booleanValue() ? 1 : 0;
- return n != 0;
- }
- catch (Exception e) {
- throw new Exception("\u5c06list\u6570\u636e\u6e90\u7684\u6570\u636e\u5bfc\u5165\u5230excel\u8868\u5355\u5f02\u5e38!", e);
+ return Boolean.TRUE.booleanValue();
+ } catch (Exception e) {
+ throw new Exception("将list数据源的数据导入到excel表单异常!", e);
}
}
- /*
- * Enabled aggressive block sorting
- * Enabled unnecessary exception pruning
- * Enabled aggressive exception aggregation
- */
- public static <T> boolean getListToExcel(List<T> list, String sheetName, OutputStream output, Class<T> clazz, Integer startRow, ExcelCallback callback) throws Exception {
- try (HSSFWorkbook workbook = new HSSFWorkbook();){
+ public static <T> boolean getListToExcel(List<T> list, String sheetName, OutputStream output, Class<T> clazz,
+ Integer startRow, ExcelCallback callback) throws Exception {
+ try (HSSFWorkbook workbook = new HSSFWorkbook()) {
int sheetSize = 65536;
Field[] allFields = clazz.getDeclaredFields();
- ArrayList<Field> fields = new ArrayList<Field>();
+ List<Field> fields = new ArrayList<>();
for (Field field : allFields) {
- ExcelAttribute attr = field.getAnnotation(ExcelAttribute.class);
- if (attr == null || !attr.isExport()) continue;
- fields.add(field);
+ ExcelAttribute attr = field.<ExcelAttribute>getAnnotation(ExcelAttribute.class);
+ if (attr != null && attr.isExport()) {
+ fields.add(field);
+ }
}
int listSize = 0;
if (list != null && list.size() > 0) {
listSize = list.size();
}
int sheetNo = listSize / sheetSize;
- for (int index = 0; index <= sheetNo; ++index) {
+ for (int index = 0; index <= sheetNo; index++) {
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(index, sheetName + index);
- ExcelUtil.createRowHeard(sheet, fields, workbook, startRow);
+ createRowHeard(sheet, fields, workbook, startRow.intValue());
int startNo = index * sheetSize;
int endNo = Math.min(startNo + sheetSize, listSize);
- ExcelUtil.createRowContent(sheet, fields, workbook, list, startNo, endNo, startRow + 1);
- if (null == callback) continue;
- callback.call(workbook, sheet);
+ createRowContent(sheet, fields, workbook, list, startNo, endNo, startRow.intValue() + 1);
+ if (null != callback) {
+ callback.call(workbook, sheet);
+ }
}
output.flush();
workbook.write(output);
output.close();
- int n = Boolean.TRUE.booleanValue() ? 1 : 0;
- return n != 0;
- }
- catch (Exception e) {
- throw new Exception("\u5c06list\u6570\u636e\u6e90\u7684\u6570\u636e\u5bfc\u5165\u5230excel\u8868\u5355\u5f02\u5e38!", e);
+ return Boolean.TRUE.booleanValue();
+ } catch (Exception e) {
+ throw new Exception("将list数据源的数据导入到excel表单异常!", e);
}
}
- private static <T> void createRowContent(HSSFSheet sheet, List<Field> fields, HSSFWorkbook workbook, List<T> list, int startNo, int endNo, int rowIndex) throws Exception {
+ private static <T> void createRowContent(HSSFSheet sheet, List<Field> fields, HSSFWorkbook workbook, List<T> list,
+ int startNo, int endNo, int rowIndex) throws Exception {
String value = null;
int hwPicType = 0;
byte[] picByte = null;
- for (int i = startNo; i < endNo; ++i) {
+ for (int i = startNo; i < endNo; i++) {
HSSFRow row = sheet.createRow(i - startNo + rowIndex);
T vo = list.get(i);
- for (int j = 0; j < fields.size(); ++j) {
+ for (int j = 0; j < fields.size(); j++) {
Field field = fields.get(j);
field.setAccessible(true);
- ExcelAttribute attr = field.getAnnotation(ExcelAttribute.class);
+ ExcelAttribute attr = field.<ExcelAttribute>getAnnotation(ExcelAttribute.class);
int col = j;
- if (StringUtils.isNotBlank((CharSequence)attr.column())) {
- col = ExcelUtil.getExcelCol(attr.column());
+ if (StringUtils.isNotBlank(attr.column())) {
+ col = getExcelCol(attr.column());
}
- if (!attr.isExport()) continue;
- HSSFCell cell = row.createCell(col);
- Class<Comparable<Date>> classType = field.getType();
- if (field.get(vo) == null) continue;
- value = null;
- if (classType.isAssignableFrom(Date.class)) {
- value = DateUtils.formatDate((Date)((Date)field.get(vo)), (String)"yyyy-MM-dd HH:mm:ss");
- }
- if (classType.isAssignableFrom(Long.class) && attr.isDate()) {
- value = DateUtils.formatDate((Date)new Date((Long)field.get(vo)), (String)"yyyy-MM-dd HH:mm:ss");
- }
- if (attr.isPic()) {
- try {
- if (field.getType().equals(String.class)) {
- picByte = ExcelUtil.getBytesByUrl((String)field.get(vo));
+ if (attr.isExport()) {
+ HSSFCell cell = row.createCell(col);
+ Class<?> classType = field.getType();
+ if (field.get(vo) != null) {
+ value = null;
+ if (classType.isAssignableFrom(Date.class)) {
+ value = DateUtils.formatDate((Date)field.get(vo), "yyyy-MM-dd HH:mm:ss");
+ }
+ if (classType.isAssignableFrom(Long.class) && attr.isDate()) {
+ value = DateUtils.formatDate(new Date(((Long)field.get(vo)).longValue()),
+ "yyyy-MM-dd HH:mm:ss");
+ }
+ if (attr.isPic()) {
+ try {
+ if (field.getType().equals(String.class)) {
+ picByte = getBytesByUrl((String)field.get(vo));
+ }
+ picByte = (byte[])field.get(vo);
+ } catch (Exception exception) {
+ }
+ hwPicType = 5;
+ HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
+ HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1020, 250, (short)col, row.getRowNum(),
+ (short)col, row.getRowNum());
+ patriarch.createPicture(anchor, workbook.addPicture(picByte, hwPicType));
+ row.setHeight((short)1000);
+ } else {
+ cell.setCellValue((field.get(vo) == null) ? ""
+ : ((value == null) ? String.valueOf(field.get(vo)) : value));
}
- picByte = (byte[])field.get(vo);
- }
- catch (Exception exception) {
- // empty catch block
}
- hwPicType = 5;
- HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
- HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1020, 250, (short)col, row.getRowNum(), (short)col, row.getRowNum());
- patriarch.createPicture(anchor, workbook.addPicture(picByte, hwPicType));
- row.setHeight((short)1000);
- continue;
}
- cell.setCellValue(field.get(vo) == null ? "" : (value == null ? String.valueOf(field.get(vo)) : value));
}
}
}
public static void createRowHeard(HSSFSheet sheet, List<Field> fields, HSSFWorkbook workbook, int index) {
HSSFRow row = sheet.createRow(index);
- for (int i = 0; i < fields.size(); ++i) {
+ for (int i = 0; i < fields.size(); i++) {
int col = i;
Field field = fields.get(i);
- ExcelAttribute attr = field.getAnnotation(ExcelAttribute.class);
- if (StringUtils.isNotBlank((CharSequence)attr.column())) {
- col = ExcelUtil.getExcelCol(attr.column());
+ ExcelAttribute attr = field.<ExcelAttribute>getAnnotation(ExcelAttribute.class);
+ if (StringUtils.isNotBlank(attr.column())) {
+ col = getExcelCol(attr.column());
}
HSSFCell cell = row.createCell(col);
- HSSFCellStyle cellStyle = ExcelUtil.createCellStyle(workbook, attr.isMark() ? "2" : FONT_CODE);
+ HSSFCellStyle cellStyle = createCellStyle(workbook, attr.isMark() ? "2" : "1");
cell.setCellStyle(cellStyle);
- sheet.setColumnWidth(i, (int)((double)(attr.name().getBytes().length <= 4 ? 6 : attr.name().getBytes().length) * 1.5 * 256.0));
- cell.setCellType(1);
+ sheet.setColumnWidth(i,
+ (int)((((attr.name().getBytes()).length <= 4) ? 6 : (attr.name().getBytes()).length) * 1.5D * 256.0D));
+ cell.setCellType(CellType.STRING);
cell.setCellValue(attr.name());
}
}
@@ -369,9 +343,9 @@
HSSFFont font = workbook.createFont();
HSSFCellStyle cellStyle = workbook.createCellStyle();
font.setFontName("Arail narrow");
- font.setBoldweight((short)700);
- if (FONT_CODE.equals(type)) {
- font.setColor((short)Short.MAX_VALUE);
+ font.setBold(true);
+ if ("1".equals(type)) {
+ font.setColor(IndexedColors.RED.getIndex());
cellStyle.setFont(font);
} else {
font.setColor((short)10);
@@ -384,14 +358,15 @@
col = col.toUpperCase();
int count = -1;
char[] cs = col.toCharArray();
- for (int i = 0; i < cs.length; ++i) {
- count = (int)((double)count + (double)(cs[i] - 64) * Math.pow(26.0, (double)cs.length - 1.0 - (double)i));
+ for (int i = 0; i < cs.length; i++) {
+ count = (int)(count + (cs[i] - 64) * Math.pow(26.0D, cs.length - 1.0D - i));
}
return count;
}
- public static HSSFSheet setHSSFPrompt(HSSFSheet sheet, String promptTitle, String promptContent, int firstRow, int endRow, int firstCol, int endCol) {
- DVConstraint constraint = DVConstraint.createCustomFormulaConstraint((String)"DD1");
+ public static HSSFSheet setHSSFPrompt(HSSFSheet sheet, String promptTitle, String promptContent, int firstRow,
+ int endRow, int firstCol, int endCol) {
+ DVConstraint constraint = DVConstraint.createCustomFormulaConstraint("DD1");
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
HSSFDataValidation dataValidationView = new HSSFDataValidation(regions, (DataValidationConstraint)constraint);
dataValidationView.createPromptBox(promptTitle, promptContent);
@@ -399,25 +374,22 @@
return sheet;
}
- public static HSSFSheet setHSSFValidation(HSSFSheet sheet, String[] textlist, int firstRow, int endRow, int firstCol, int endCol) {
- DVConstraint constraint = DVConstraint.createExplicitListConstraint((String[])textlist);
+ public static HSSFSheet setHSSFValidation(HSSFSheet sheet, String[] textlist, int firstRow, int endRow,
+ int firstCol, int endCol) {
+ DVConstraint constraint = DVConstraint.createExplicitListConstraint(textlist);
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
HSSFDataValidation dataValidationList = new HSSFDataValidation(regions, (DataValidationConstraint)constraint);
sheet.addValidationData((DataValidation)dataValidationList);
return sheet;
}
- /*
- * WARNING - Removed try catching itself - possible behaviour change.
- */
public static byte[] getBytesByUrl(String imgUrl) throws Exception {
- if (StringUtils.isEmpty((CharSequence)imgUrl)) {
+ if (StringUtils.isEmpty(imgUrl)) {
return null;
}
BufferedInputStream bis = null;
ByteArrayOutputStream bos = null;
try {
- int size;
URL url = new URL(imgUrl);
HttpURLConnection http = (HttpURLConnection)url.openConnection();
http.setConnectTimeout(3000);
@@ -425,28 +397,25 @@
bis = new BufferedInputStream(http.getInputStream());
bos = new ByteArrayOutputStream();
byte[] buf = new byte[8096];
+ int size;
while ((size = bis.read(buf)) != -1) {
bos.write(buf, 0, size);
}
http.disconnect();
- byte[] byArray = bos.toByteArray();
- return byArray;
- }
- finally {
+ return bos.toByteArray();
+ } finally {
if (bis != null) {
try {
bis.close();
- }
- catch (IOException e) {
- logger.error("\u6d41\u5173\u95ed\u5931\u8d25\uff0c\u539f\u56e0\uff1a" + e.getMessage(), (Throwable)e);
+ } catch (IOException e) {
+ logger.error("流关闭失败,原因:" + e.getMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
- }
- catch (IOException e) {
- logger.error("\u6d41\u5173\u95ed\u5931\u8d25\uff0c\u539f\u56e0\uff1a" + e.getMessage(), (Throwable)e);
+ } catch (IOException e) {
+ logger.error("流关闭失败,原因:" + e.getMessage(), e);
}
}
}
@@ -460,20 +429,18 @@
Field value = null;
try {
value = invocationHandler.getClass().getDeclaredField(ANNOTATION_FIELD);
- }
- catch (Exception e) {
- logger.warn("\u53cd\u5c04\u83b7\u53d6ExcelAttribute\u6ce8\u89e3\u7684\u6210\u5458\u5b57\u6bb5\u5f02\u5e38", (Throwable)e);
+ } catch (Exception e) {
+ logger.warn("反射获取ExcelAttribute注解的成员字段异常", e);
}
if (value == null) {
return;
}
value.setAccessible(true);
- Map memberValues = null;
+ Map<String, Object> memberValues = null;
try {
- memberValues = (Map)value.get(invocationHandler);
- }
- catch (Exception e) {
- logger.warn("\u53cd\u5c04\u83b7\u53d6ExcelAttribute\u6ce8\u89e3\u7684\u6210\u5458\u503c\u5f02\u5e38", (Throwable)e);
+ memberValues = (Map<String, Object>)value.get(invocationHandler);
+ } catch (Exception e) {
+ logger.warn("反射获取ExcelAttribute注解的成员值异常", e);
}
if (memberValues == null) {
return;
@@ -482,34 +449,30 @@
memberValues.put(key, obj);
}
if (!isExport) {
- memberValues.put(EXPORT_KEY, isExport);
+ memberValues.put(EXPORT_KEY, Boolean.valueOf(isExport));
}
}
- /*
- * Exception decompiling
- */
- public static <T> boolean appendListToExcel(InputStream inputStream, List<T> list, int sheetIndex, OutputStream output, Class<T> clazz, Integer startRow) throws Exception {
- /*
- * This method has failed to decompile. When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
- *
- * org.benf.cfr.reader.util.ConfusedCFRException: Started 2 blocks at once
- * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.getStartingBlocks(Op04StructuredStatement.java:412)
- * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:487)
- * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
- * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
- * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
- * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
- * at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
- * at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
- * at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
- * at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
- * at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
- * at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
- * at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
- * at org.benf.cfr.reader.Main.main(Main.java:54)
- */
- throw new IllegalStateException("Decompilation failed");
+ public static <T> boolean appendListToExcel(InputStream inputStream, List<T> list, int sheetIndex,
+ OutputStream output, Class<T> clazz, Integer startRow) throws Exception {
+ try (HSSFWorkbook workbook = new HSSFWorkbook(inputStream)) {
+ Field[] allFields = clazz.getDeclaredFields();
+ List<Field> fields = new ArrayList<>();
+ for (Field field : allFields) {
+ ExcelAttribute attr = field.<ExcelAttribute>getAnnotation(ExcelAttribute.class);
+ if (attr != null && attr.isExport()) {
+ fields.add(field);
+ }
+ }
+ HSSFSheet sheet = workbook.getSheetAt(sheetIndex);
+ createRowContent(sheet, fields, workbook, list, 0, list.size(), startRow.intValue());
+ output.flush();
+ workbook.write(IOUtils.buffer(output));
+ return Boolean.TRUE.booleanValue();
+ } catch (IOException e) {
+ throw new Exception("将list数据源的数据导入到excel表单异常!", e);
+ } finally {
+ output.close();
+ }
}
}
-
@@ -0,0 +1,123 @@
# Maven 源码 vs V1(CFR) 逐类比对报告
- **V1 基准**`artifacts/decompiled/v1-cfr-compare-20211103/cfr-by-artifact/{module}/cn/cloudwalk/elevator/**/*.java`
- **Maven**`maven-cw-elevator-application/{module}/src/main/java/cn/cloudwalk/elevator/**/*.java`
- **配对规则**:相对路径(自 `elevator/` 起)同名即视为同一类。
- **相似度**:粗去 `//``/* */` 注释与空行后,对全文做 `difflib.SequenceMatcher.ratio`。**CFR 反编译会导致变量名、泛型呈现、括号风格与 Maven 源码不一致,分数系统性偏低——仅作筛查排序,不能单独证明业务不一致。**
## 1. 汇总表
| 模块 | V1 文件数 | Maven 文件数 | 配对 | ≥0.98 | 0.850.98 | <0.85 | 仅 V1 | 仅 Maven |
|------|-----------|----------------|------|-------|-----------|-------|-------|------------|
| cw-elevator-application-common | 32 | 33 | 32 | 5 | 11 | 16 | 0 | 1 |
| cw-elevator-application-data | 79 | 84 | 79 | 43 | 18 | 18 | 0 | 5 |
| cw-elevator-application-service | 150 | 162 | 150 | 72 | 32 | 46 | 0 | 12 |
| cw-elevator-application-web | 44 | 47 | 44 | 26 | 7 | 11 | 0 | 3 |
| cw-elevator-application-starter | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 3 |
| **合计** | **305** | **329** | **305** | **146** | **68** | **91** | **0** | **24** |
说明:**starter** 在 V1 CFR 目录下无 `cn/cloudwalk/elevator` 树时配对数为 0;仅统计 Maven 侧文件。
## 2. 仅 Maven(未在 V1 同路径出现)
### cw-elevator-application-common
- `package-info.java`*package-info*
### cw-elevator-application-data
- `device/package-info.java`*package-info*
- `person/dao/TenantVisitorFloorPolicyDao.java`*租户访客楼层策略(V2)*
- `person/dto/TenantVisitorFloorPolicyDto.java`*租户访客楼层策略(V2)*
- `person/impl/TenantVisitorFloorPolicyDaoImpl.java`*租户访客楼层策略(V2)*
- `person/mapper/TenantVisitorFloorPolicyMapper.java`*租户访客楼层策略(V2)*
### cw-elevator-application-service
- `CloudwalkSessionHolderConfiguration.java`*Session 扩展*
- `common/ElevatorRemoteIoExecutorConfig.java`*远程 IO 池*
- `common/ElevatorRemoteIoPoolProperties.java`*远程 IO 池*
- `common/package-info.java`*package-info*
- `device/package-info.java`*package-info*
- `mqtt/package-info.java`*package-info*
- `package-info.java`*package-info*
- `passrule/package-info.java`*package-info*
- `person/package-info.java`*package-info*
- `record/package-info.java`*package-info*
- `visitor/package-info.java`*package-info*
- `zone/package-info.java`*package-info*
### cw-elevator-application-web
- `handler/device/package-info.java`*package-info*
- `handler/package-info.java`*package-info*
- `zone/util/ZoneTreeCollectors.java`*工具类*
### cw-elevator-application-starter
- `ElevatorApplication.java`
- `config/DavinciStorageBeansConfiguration.java`*Davinci 存储*
- `integration/davinci/OpenFeignFileStorageManager.java`*Davinci 存储*
## 3. 解读要点(确定性审核边界)
1. **此比对不触及 Maven 依赖 jar**;仅对比本仓库 `.java` 与 V1 CFR `.java`
2. **相似度低 ≠ 业务不一致**:枚举常量顺序、字符串拼接、lambda/匿名类还原差异都会拉低分数。
3. **优先人工看**Controller、`ServiceImpl` 主流程、`FeignClient``DaoImpl` 调用序列;DTO/枚举可次要。
4. **仅 Maven 的 TenantVisitorFloor\***:与 V1 20211103 基线不对齐(已知扩展),一致性审查可跳过。
## 4. 附录:相似度两端样本(辅助复核)
### 4.1 最高相似(示例)
- `cw-elevator-application-common/context/CloudWalkExtendContextValue.java` **1.0000**
- `cw-elevator-application-common/util/AcsCacheKeyUtil.java` **1.0000**
- `cw-elevator-application-data/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.java` **1.0000**
- `cw-elevator-application-data/codeElevatorArea/dto/AcsElevatorCodeResultDTO.java` **1.0000**
- `cw-elevator-application-data/passrule/dto/AcsPassRuleImageResultDto.java` **1.0000**
- `cw-elevator-application-data/passrule/dto/AcsPassRuleLabelResultDto.java` **1.0000**
- `cw-elevator-application-data/record/dto/AcsElevatorPageRequestInfoResultDTO.java` **1.0000**
- `cw-elevator-application-data/record/dto/AcsElevatorQueryCountDTO.java` **1.0000**
- `cw-elevator-application-service/codeElevatorArea/result/AcsElevatorCodeResult.java` **1.0000**
- `cw-elevator-application-service/passrule/result/AcsPassRuleDetailResult.java` **1.0000**
- `cw-elevator-application-service/passrule/result/ImageRuleRefDetailResult.java` **1.0000**
- `cw-elevator-application-service/passrule/result/ImageRuleRefPageResult.java` **1.0000**
- `cw-elevator-application-service/record/param/SendRecordSendInfoParam.java` **1.0000**
- `cw-elevator-application-service/record/param/SendRecordTokenParam.java` **1.0000**
- `cw-elevator-application-service/record/result/AcsElevatorAnalyseCycleBusinessResult.java` **1.0000**
### 4.2 最低相似(建议优先打开 diff)
- `cw-elevator-application-data/device/dto/AcsElevatorDeviceResultDTO.java` **0.1050**
- `cw-elevator-application-data/device/dto/AcsElevatorDeviceQueryFoDTO.java` **0.1052**
- `cw-elevator-application-service/device/result/AcsElevatorDeviceListResult.java` **0.1192**
- `cw-elevator-application-data/device/dto/AcsElevatorDeviceListResultDto.java` **0.1215**
- `cw-elevator-application-web/person/form/AcsPersonQueryForm.java` **0.1247**
- `cw-elevator-application-data/passrule/dto/ImageRuleRefAddDto.java` **0.1342**
- `cw-elevator-application-common/em/AlarmStateCodeEnum.java` **0.1399**
- `cw-elevator-application-common/util/CommunityConstants.java` **0.1989**
- `cw-elevator-application-service/export/result/ElevatorDeviceRecordExcelResult.java` **0.1998**
- `cw-elevator-application-common/em/AcsDeviceQueryTypeEnum.java` **0.2016**
- `cw-elevator-application-common/em/AcsDeviceIdentifyTypeEnum.java` **0.2052**
- `cw-elevator-application-data/passrule/dto/ImageRuleRefListResult.java` **0.2072**
- `cw-elevator-application-service/person/param/AcsPersonAddVisitorParam.java` **0.2339**
- `cw-elevator-application-web/person/form/AcsPersonAddVisitorForm.java` **0.2385**
- `cw-elevator-application-service/mqtt/param/AcsElevatorRecordMqttParam.java` **0.2772**
- `cw-elevator-application-service/device/result/AcsLabelElevatorResult.java` **0.2838**
- `cw-elevator-application-service/device/param/AcsDeviceRestructureTaskParam.java` **0.2992**
- `cw-elevator-application-common/config/FeignThreadLocalUtil.java` **0.3187**
- `cw-elevator-application-data/passrule/dto/ImageRuleRefResultDto.java` **0.3893**
- `cw-elevator-application-service/common/AbstractAcsDeviceService.java` **0.4027**
- `cw-elevator-application-service/person/param/AcsPersonQueryParam.java` **0.4166**
- `cw-elevator-application-data/record/impl/AcsElevatorRecordDaoImpl.java` **0.4350**
- `cw-elevator-application-service/passrule/impl/ImageRuleRefServiceImpl.java` **0.4616**
- `cw-elevator-application-service/device/impl/AcsDeviceTaskServiceImpl.java` **0.4644**
- `cw-elevator-application-service/device/param/AcsRestructureBindingParam.java` **0.4817**
- `cw-elevator-application-web/handler/device/form/AcsRestructureBindingForm.java` **0.4877**
- `cw-elevator-application-service/device/result/AcsDeviceRestructureResult.java` **0.4909**
- `cw-elevator-application-data/passrule/mapper/ImageRuleRefMapper.java` **0.4948**
- `cw-elevator-application-service/passrule/result/AcsPassRuleFloorResult.java` **0.5020**
- `cw-elevator-application-service/device/param/AcsRestructureQueryParam.java` **0.5047**
- `cw-elevator-application-web/handler/device/form/AcsRestructureQueryForm.java` **0.5049**
- `cw-elevator-application-data/record/dto/AcsRecogRecordPageDTO.java` **0.5121**
- `cw-elevator-application-common/util/CollectionUtils.java` **0.5129**
- `cw-elevator-application-common/util/StringUtils.java` **0.5311**
- `cw-elevator-application-common/util/RestTemplateUtil.java` **0.5335**
- `cw-elevator-application-service/AcsFeignConfiguration.java` **0.5382**
- `cw-elevator-application-web/handler/device/form/AcsDeviceRestructureTaskForm.java` **0.5446**
- `cw-elevator-application-service/device/impl/AcsElevatorDeviceServiceImpl.java` **0.5556**
- `cw-elevator-application-common/em/EngineAddressEnum.java` **0.5630**
- `cw-elevator-application-common/em/OpenDoorTypeEnum.java` **0.5714**
@@ -0,0 +1,102 @@
# Maven 源码 vs V1 自动反编译(cw_lib jar / CFR)逐类比对
- **V1 根**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/v1-decompiled/cfr-from-cw-lib-20260428-125543``decompile_v1_elevator_jars.sh` 生成)
- **V2 根**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/{module}/src/main/java/cn/cloudwalk/elevator`
- **相似度**: 去注释后 `SequenceMatcher.ratio`CFR 噪声会导致分数偏低)
## 1. 汇总(四模块来自 cw_lib jar 反编译)
| 模块 | 配对 | ≥0.98 | 0.850.98 | <0.85 | 仅 V1 | 仅 Maven |
|------|------|-------|-----------|-------|-------|------------|
| cw-elevator-application-common | 32 | 5 | 11 | 16 | 0 | 1 |
| cw-elevator-application-data | 79 | 43 | 18 | 18 | 0 | 5 |
| cw-elevator-application-service | 150 | 72 | 32 | 46 | 0 | 12 |
| cw-elevator-application-web | 44 | 26 | 7 | 11 | 0 | 3 |
| **合计** | **305** | **146** | **68** | **91** | **0** | **21** |
## 2. 仅 Maven(相对 `cn/cloudwalk/elevator`
### cw-elevator-application-common
- `package-info.java`*package-info*
### cw-elevator-application-data
- `device/package-info.java`*package-info*
- `person/dao/TenantVisitorFloorPolicyDao.java`*租户访客楼层策略(V2)*
- `person/dto/TenantVisitorFloorPolicyDto.java`*租户访客楼层策略(V2)*
- `person/impl/TenantVisitorFloorPolicyDaoImpl.java`*租户访客楼层策略(V2)*
- `person/mapper/TenantVisitorFloorPolicyMapper.java`*租户访客楼层策略(V2)*
### cw-elevator-application-service
- `CloudwalkSessionHolderConfiguration.java`*Session 扩展*
- `common/ElevatorRemoteIoExecutorConfig.java`*远程 IO 池*
- `common/ElevatorRemoteIoPoolProperties.java`*远程 IO 池*
- `common/package-info.java`*package-info*
- `device/package-info.java`*package-info*
- `mqtt/package-info.java`*package-info*
- `package-info.java`*package-info*
- `passrule/package-info.java`*package-info*
- `person/package-info.java`*package-info*
- `record/package-info.java`*package-info*
- `visitor/package-info.java`*package-info*
- `zone/package-info.java`*package-info*
### cw-elevator-application-web
- `handler/device/package-info.java`*package-info*
- `handler/package-info.java`*package-info*
- `zone/util/ZoneTreeCollectors.java`*工具类*
## 3. 样本:最高 / 最低相似度路径
### 最高
- `cw-elevator-application-common/context/CloudWalkExtendContextValue.java` **1.0000**
- `cw-elevator-application-common/util/AcsCacheKeyUtil.java` **1.0000**
- `cw-elevator-application-data/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.java` **1.0000**
- `cw-elevator-application-data/codeElevatorArea/dto/AcsElevatorCodeResultDTO.java` **1.0000**
- `cw-elevator-application-data/passrule/dto/AcsPassRuleImageResultDto.java` **1.0000**
- `cw-elevator-application-data/passrule/dto/AcsPassRuleLabelResultDto.java` **1.0000**
- `cw-elevator-application-data/record/dto/AcsElevatorPageRequestInfoResultDTO.java` **1.0000**
- `cw-elevator-application-data/record/dto/AcsElevatorQueryCountDTO.java` **1.0000**
- `cw-elevator-application-service/codeElevatorArea/result/AcsElevatorCodeResult.java` **1.0000**
- `cw-elevator-application-service/passrule/result/AcsPassRuleDetailResult.java` **1.0000**
- `cw-elevator-application-service/passrule/result/ImageRuleRefDetailResult.java` **1.0000**
- `cw-elevator-application-service/passrule/result/ImageRuleRefPageResult.java` **1.0000**
- `cw-elevator-application-service/record/param/SendRecordSendInfoParam.java` **1.0000**
- `cw-elevator-application-service/record/param/SendRecordTokenParam.java` **1.0000**
- `cw-elevator-application-service/record/result/AcsElevatorAnalyseCycleBusinessResult.java` **1.0000**
### 最低(优先 IDE diff
- `cw-elevator-application-data/device/dto/AcsElevatorDeviceResultDTO.java` **0.1050**
- `cw-elevator-application-data/device/dto/AcsElevatorDeviceQueryFoDTO.java` **0.1052**
- `cw-elevator-application-service/device/result/AcsElevatorDeviceListResult.java` **0.1192**
- `cw-elevator-application-data/device/dto/AcsElevatorDeviceListResultDto.java` **0.1215**
- `cw-elevator-application-web/person/form/AcsPersonQueryForm.java` **0.1247**
- `cw-elevator-application-data/passrule/dto/ImageRuleRefAddDto.java` **0.1342**
- `cw-elevator-application-common/em/AlarmStateCodeEnum.java` **0.1399**
- `cw-elevator-application-common/util/CommunityConstants.java` **0.1989**
- `cw-elevator-application-service/export/result/ElevatorDeviceRecordExcelResult.java` **0.1998**
- `cw-elevator-application-common/em/AcsDeviceQueryTypeEnum.java` **0.2016**
- `cw-elevator-application-common/em/AcsDeviceIdentifyTypeEnum.java` **0.2052**
- `cw-elevator-application-data/passrule/dto/ImageRuleRefListResult.java` **0.2072**
- `cw-elevator-application-service/person/param/AcsPersonAddVisitorParam.java` **0.2339**
- `cw-elevator-application-web/person/form/AcsPersonAddVisitorForm.java` **0.2385**
- `cw-elevator-application-service/mqtt/param/AcsElevatorRecordMqttParam.java` **0.2772**
- `cw-elevator-application-service/device/result/AcsLabelElevatorResult.java` **0.2838**
- `cw-elevator-application-service/device/param/AcsDeviceRestructureTaskParam.java` **0.2992**
- `cw-elevator-application-common/config/FeignThreadLocalUtil.java` **0.3187**
- `cw-elevator-application-data/passrule/dto/ImageRuleRefResultDto.java` **0.3893**
- `cw-elevator-application-service/common/AbstractAcsDeviceService.java` **0.4027**
- `cw-elevator-application-service/person/param/AcsPersonQueryParam.java` **0.4166**
- `cw-elevator-application-data/record/impl/AcsElevatorRecordDaoImpl.java` **0.4350**
- `cw-elevator-application-service/passrule/impl/ImageRuleRefServiceImpl.java` **0.4616**
- `cw-elevator-application-service/device/impl/AcsDeviceTaskServiceImpl.java` **0.4644**
- `cw-elevator-application-service/device/param/AcsRestructureBindingParam.java` **0.4817**
- `cw-elevator-application-web/handler/device/form/AcsRestructureBindingForm.java` **0.4877**
- `cw-elevator-application-service/device/result/AcsDeviceRestructureResult.java` **0.4909**
- `cw-elevator-application-data/passrule/mapper/ImageRuleRefMapper.java` **0.4948**
- `cw-elevator-application-service/passrule/result/AcsPassRuleFloorResult.java` **0.5020**
- `cw-elevator-application-service/device/param/AcsRestructureQueryParam.java` **0.5047**
- `cw-elevator-application-web/handler/device/form/AcsRestructureQueryForm.java` **0.5049**
- `cw-elevator-application-data/record/dto/AcsRecogRecordPageDTO.java` **0.5121**
- `cw-elevator-application-common/util/CollectionUtils.java` **0.5129**
- `cw-elevator-application-common/util/StringUtils.java` **0.5311**
- `cw-elevator-application-common/util/RestTemplateUtil.java` **0.5335**
@@ -0,0 +1,70 @@
# V1 对齐子任务执行单(立即执行落地)
生成时间:2026-04-28
范围:仅 `maven-cw-elevator-application`,不修改其它 Maven 兄弟仓库。
---
## 已在本次会话落地的项
| # | 子任务 | 动作 |
| --- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| A | **对拍排除租户访客楼层** | `api_catalog.json``person_add_visitor_min` 设为 `include_in_parity=false`,补充 `parity_exclude_reason`;顶层 `description` 说明原因。 |
| B | **全 catalog 对拍与窄对拍一致** | `tests/test_parity_full_catalog.py`:仅收集 `include_in_parity=true` 的条目(与 `test_parity_from_catalog` 一致)。 |
| C | **依赖树归档(starter/fat-jar 入口)** | 执行 `mvn dependency:tree``cw-elevator-application-starter`,归档:`report/dependency-tree-starter-20260428.txt`。 |
| D | **逐类源码 vs V1(自动反编译 cw_lib jar** | `./scripts/decompile_v1_elevator_jars.sh``tools/v1-decompiled/``python3 tools/elevator_api_parity/scripts/source_parity_scan.py`**`report/SOURCE-PARITY-BY-CLASS-decomp.md`**。旧版静态快照:`SOURCE-PARITY-BY-CLASS-20260428.md`。 |
核对命令(依赖树重现):
```bash
cd maven-cw-elevator-application/cw-elevator-application-starter
mvn -DskipTests dependency:tree -DoutputFile=target/dependency-tree.txt
```
当前 `cloudwalk-common-*` 解析版本:**3.7.2-Brussels-SRX**(见归档文件)。
---
## 窄对拍(`include_in_parity=true`)当前条目
运行双端前先起 V1+V2`/health` 可达后:
```bash
cd tools/elevator_api_parity
# 若本机 allure pytest 与 attr 冲突,可禁自动加载第三方插件:
export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
ELEVATOR_PARITY_REQUIRE_LIVE=1 python3 -m pytest tests/test_parity_endpoints.py -m live -v
```
或使用全 catalog 中与上表一致的用例(**3 条**):
```bash
export PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
python3 -m pytest tests/test_parity_full_catalog.py -m live -v
```
二者现在仅断言 **3 条**`person_detail``passrule_page``record_page`),访客接口已不参与 V1/V2 code 等值断言。
---
## 待人工/环境接续的子任务(未自动化)
| # | 内容 | 说明 |
| --- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| 1 | 分域源码走查 person/passrule/device/record | 对照 `artifacts/decompiled/v1-cfr-compare-20211103/cfr-by-artifact`,关注 Feign/Dao 调用序列(CFR 仅辅助)。 |
| 2 | Feign/Ribbon 与部署配置 | `ElevatorApplication``NincaCrkStdRibbonConfiguration``deploy/*/application.properties` 与运行环境一致;对拍需在**相同 listOfServers/域名**下进行。 |
| 3 | `@CloudwalkParamsValidate` 行为 | 依赖 `cloudwalk-common-service` 字节码;若双端业务码仍分叉,仅在电梯模块内收敛(实现类补注解或等价校验),**不改兄弟仓库**。 |
| 4 | fixtures 扩充 | `fixtures/*.json` 覆盖真实租户数据后,可把更多 catalog 条目的 `include_in_parity` 改为 `true`。 |
| 5 | 回滚 | 保留上一版 `cw-elevator-application-*.jar`;对拍大面积失败即回滚替换。 |
---
## 验收口径(与「确保」可行性一致)
- **可验收**:路由 + 选定条目的双端业务 `code` + 同依赖树构建产物。
- **不可单独验收**:未升级的传递依赖字节码与生产全网运行时逐条等价。
@@ -0,0 +1,112 @@
# V1 vs V2 字节码根因分析
- 生成时间(UTC):`2026-04-29T01:54:50Z`
- 对比范围:四模块 `cn/cloudwalk/elevator/**` 主类(不含 `$` 内部类)
- 维度:类存在性 / API签名 / 方法实现
## 1. 总览
| 维度 | 数量 |
|---|---:|
| MATCH | 261 |
| IMPL_DIFF | 30 |
| API_DIFF | 14 |
| ONLY_V1 | 0 |
| ONLY_V2 | 8 |
## 2. 各模块分布
| 模块 | MATCH | IMPL_DIFF | API_DIFF | ONLY_V1 | ONLY_V2 |
|---|---:|---:|---:|---:|---:|
| cw-elevator-application-common | 30 | 1 | 1 | 0 | 0 |
| cw-elevator-application-data | 68 | 8 | 3 | 0 | 4 |
| cw-elevator-application-service | 126 | 15 | 9 | 0 | 3 |
| cw-elevator-application-web | 37 | 6 | 1 | 0 | 1 |
## 3. API 相同但实现不同(优先查 JD-GUI 还原误差/人工改写)
| 模块 | 类 |
|---|---|
| cw-elevator-application-common | `cn.cloudwalk.elevator.util.StringUtils` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceListByBuildingIdDto` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceListResultDto` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceQueryFoDTO` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceResultDTO` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.passrule.dto.ImageRuleRefAddDto` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.passrule.dto.ImageRuleRefListResult` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.passrule.dto.ImageRuleRefResultDto` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.record.dto.AcsRecogRecordPageDTO` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.param.AcsDeviceRestructureTaskParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.param.AcsRestructureBindingParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.param.AcsRestructureQueryParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.result.AcsDeviceRestructureResult` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.result.AcsElevatorDeviceListResult` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.result.AcsLabelElevatorResult` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.result.KeyValueResult` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.export.AcsAbstractExportAsyncService` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.export.result.ElevatorDeviceRecordExcelResult` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.mqtt.param.AcsElevatorRecordMqttParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.mqtt.param.MqttSendMessageParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.passrule.result.AcsPassRuleFloorResult` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.person.param.AcsPersonAddVisitorParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.person.param.AcsPersonQueryParam` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.person.param.PersonDetailQueryParam` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.handler.device.form.AcsDeviceRestructureTaskForm` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.handler.device.form.AcsRestructureBindingForm` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.handler.device.form.AcsRestructureQueryForm` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.person.form.AcsPersonAddVisitorForm` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.person.form.AcsPersonQueryForm` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.person.form.PersonDetailQueryForm` |
## 4. API 不同(优先查源码结构漂移)
| 模块 | 类 |
|---|---|
| cw-elevator-application-common | `cn.cloudwalk.elevator.config.FeignThreadLocalUtil` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.codeElevatorArea.dao.AcsElevatorCodeDao` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.codeElevatorArea.impl.AcsElevatorCodeDaoImpl` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.codeElevatorArea.mapper.AcsElevatorCodeMapper` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.codeElevatorArea.impl.AcsElevatorCodeServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.codeElevatorArea.service.AcsElevatorCodeService` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.impl.AcsDeviceTaskServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.device.impl.AcsElevatorDeviceServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.passrule.impl.AcsPassRuleServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.passrule.impl.ImageRuleRefServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.person.impl.AcsPersonServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.person.impl.PersonRuleServiceImpl` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.record.impl.AcsElevatorRecordServiceImpl` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceController` |
## 5. 仅 V2 存在(新增类)
| 模块 | 类 |
|---|---|
| cw-elevator-application-data | `cn.cloudwalk.elevator.person.dao.TenantVisitorFloorPolicyDao` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.person.dto.TenantVisitorFloorPolicyDto` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.person.impl.TenantVisitorFloorPolicyDaoImpl` |
| cw-elevator-application-data | `cn.cloudwalk.elevator.person.mapper.TenantVisitorFloorPolicyMapper` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.CloudwalkSessionHolderConfiguration` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.common.ElevatorRemoteIoExecutorConfig` |
| cw-elevator-application-service | `cn.cloudwalk.elevator.common.ElevatorRemoteIoPoolProperties` |
| cw-elevator-application-web | `cn.cloudwalk.elevator.zone.util.ZoneTreeCollectors` |
## 6. 仅 V1 存在(缺失类)
-
## 7. 根因判读指引
- `IMPL_DIFF`:若对应源码与 CFR 文本高度相似但字节码仍不同,多为 JD-GUI 语句重排/条件翻译偏差或后续手工改写。
- `API_DIFF`:优先判定为“源码结构变化”,例如方法签名、字段类型、泛型边界变化。
- `ONLY_V2/ONLY_V1`:属于文件集合漂移(新增/漏还原/清理)。
## 8. API_DIFF 判读
- **成员顺序**:同签名不同顺序(常见于 Lombok getter/setter 顺序)已由 `norm_api` 合并 descriptor 后排序消除伪差异。
- **默认可视构造**:仅含 static 的类若未写显式私有空参构造,javac 可能生成 **public** 默认构造,与旧 JAR 中 **private** 不同;可在源码中补充与 V1 一致。
- **真实契约差异**:仍报 API_DIFF 时多为 V2 **新增/改签名** 的方法或字段,需对照业务是否保留(并非脚本噪声)。
## 9. 实现归一化(摘要)
- **行级**:指令偏移、`#` 常量池下标、`if_icmp*`/`goto` 目标、`xload`/`xstore` 槽位、`iinc``ArrayList``List` 的 add/size、`tableswitch` 纯数字行等。
- **二次(`bytecode_norm_post`**`ifxx`+`goto` 蹦床→反条件单条;连续 `goto @` 折叠;连续重复 `checkcast` 去重;`String.join` 前冗余 `checkcast java/lang/String``iconst_0`+dup 与 istore/iload 轮换初始化局部;Apache POI `setCellType`/`setBold`/`setColor` 新旧 API 占位符。
@@ -0,0 +1,529 @@
# V1 vs V2 源码差异与问题梳理(全自动比对)
- **生成时间(UTC**: 2026-04-28T05:00:41Z
- **V1**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/v1-decompiled/cfr-from-cw-lib-20260428-125802`cw_lib jar → CFR
- **V2**: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/{module}/src/main/java/cn/cloudwalk/elevator`
- **相似度**: 去注释后全文 `SequenceMatcher.ratio`;**低分≠业务错误**(CFR 变量名/枚举顺序等)。
## 1. 结论摘要
| 维度 | 数量 | 说明 |
| ------------- | --- | -------------------------------- |
| 配对类 | 305 | 同名路径 `.java` |
| A 桶 ≥0.98 | 146 | 文本高度接近 |
| B 桶 0.850.98 | 68 | 多为格式/注释/轻微差异,建议抽检 |
| C 桶 <0.85 | 91 | **优先 IDE diff**;枚举/DTO 常为 CFR 噪声 |
| 仅 V1 | 0 | 当前四模块应为 0 |
| 仅 Maven | 21 | V2 新增;访客楼层策略等为**已知扩展** |
### 1.1 建议处置
1. **仅 Maven**`TenantVisitorFloor`* — 与 V1 对齐无关(产品已排除);`package-info` — 忽略。
2. **C 桶 + 高优先级**Controller / ServiceImpl / Feign):优先人工对照业务分支与远程调用。
3. **C 桶 + 枚举/DTO**:优先视为 CFR 噪声,除非接口契约变更。
## 2. 仅 Maven 文件(问题/范围标注)
- `cw-elevator-application-common/package-info.java`**工程化-package-info**
- `cw-elevator-application-data/device/package-info.java`**工程化-package-info**
- `cw-elevator-application-data/person/dao/TenantVisitorFloorPolicyDao.java`**V2扩展-租户访客楼层**
- `cw-elevator-application-data/person/dto/TenantVisitorFloorPolicyDto.java`**V2扩展-租户访客楼层**
- `cw-elevator-application-data/person/impl/TenantVisitorFloorPolicyDaoImpl.java`**V2扩展-租户访客楼层**
- `cw-elevator-application-data/person/mapper/TenantVisitorFloorPolicyMapper.java`**V2扩展-租户访客楼层**
- `cw-elevator-application-service/CloudwalkSessionHolderConfiguration.java`**V2扩展-Session**
- `cw-elevator-application-service/common/ElevatorRemoteIoExecutorConfig.java`**V2扩展-远程IO线程池**
- `cw-elevator-application-service/common/ElevatorRemoteIoPoolProperties.java`**V2扩展-远程IO线程池**
- `cw-elevator-application-service/common/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/device/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/mqtt/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/passrule/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/person/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/record/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/visitor/package-info.java`**工程化-package-info**
- `cw-elevator-application-service/zone/package-info.java`**工程化-package-info**
- `cw-elevator-application-web/handler/device/package-info.java`**工程化-package-info**
- `cw-elevator-application-web/handler/package-info.java`**工程化-package-info**
- `cw-elevator-application-web/zone/util/ZoneTreeCollectors.java`**V2独有-工具类**
## 3. C 桶(<0.85)按复核优先级分组
### 中-DTO表单
| 路径 | 相似度 |
| ---------------------------------------------------------------------------------------- | ------ |
| `cw-elevator-application-service/passrule/param/AcsPassTimeCycleParam.java` | 0.8399 |
| `cw-elevator-application-service/person/param/AcsPersonAddNewParam.java` | 0.8391 |
| `cw-elevator-application-service/passrule/param/AcsPassTimeAddParam.java` | 0.8347 |
| `cw-elevator-application-web/passrule/form/AcsPassRulePersonListForm.java` | 0.8235 |
| `cw-elevator-application-service/passrule/param/AcsPassRulePersonListParam.java` | 0.8149 |
| `cw-elevator-application-service/person/result/AcsImagestorePersonStatisticsResult.java` | 0.7986 |
| `cw-elevator-application-service/mqtt/param/MqttSendMessageParam.java` | 0.6788 |
| `cw-elevator-application-service/device/result/KeyValueResult.java` | 0.6397 |
| `cw-elevator-application-data/device/dto/AcsElevatorDeviceListByBuildingIdDto.java` | 0.6078 |
| `cw-elevator-application-service/person/param/PersonDetailQueryParam.java` | 0.5849 |
| `cw-elevator-application-web/person/form/PersonDetailQueryForm.java` | 0.5835 |
| `cw-elevator-application-web/handler/device/form/AcsDeviceRestructureTaskForm.java` | 0.5446 |
| `cw-elevator-application-data/record/dto/AcsRecogRecordPageDTO.java` | 0.5121 |
| `cw-elevator-application-web/handler/device/form/AcsRestructureQueryForm.java` | 0.5049 |
| `cw-elevator-application-service/device/param/AcsRestructureQueryParam.java` | 0.5047 |
| `cw-elevator-application-service/passrule/result/AcsPassRuleFloorResult.java` | 0.5020 |
| `cw-elevator-application-service/device/result/AcsDeviceRestructureResult.java` | 0.4909 |
| `cw-elevator-application-web/handler/device/form/AcsRestructureBindingForm.java` | 0.4876 |
| `cw-elevator-application-service/device/param/AcsRestructureBindingParam.java` | 0.4817 |
| `cw-elevator-application-service/person/param/AcsPersonQueryParam.java` | 0.4166 |
| `cw-elevator-application-data/passrule/dto/ImageRuleRefResultDto.java` | 0.3893 |
| `cw-elevator-application-service/device/param/AcsDeviceRestructureTaskParam.java` | 0.2992 |
| `cw-elevator-application-service/device/result/AcsLabelElevatorResult.java` | 0.2838 |
| `cw-elevator-application-service/mqtt/param/AcsElevatorRecordMqttParam.java` | 0.2772 |
| `cw-elevator-application-web/person/form/AcsPersonAddVisitorForm.java` | 0.2385 |
| `cw-elevator-application-service/person/param/AcsPersonAddVisitorParam.java` | 0.2339 |
| `cw-elevator-application-data/passrule/dto/ImageRuleRefListResult.java` | 0.2072 |
| `cw-elevator-application-service/export/result/ElevatorDeviceRecordExcelResult.java` | 0.1998 |
| `cw-elevator-application-data/passrule/dto/ImageRuleRefAddDto.java` | 0.1342 |
| `cw-elevator-application-web/person/form/AcsPersonQueryForm.java` | 0.1247 |
| `cw-elevator-application-data/device/dto/AcsElevatorDeviceListResultDto.java` | 0.1215 |
| `cw-elevator-application-service/device/result/AcsElevatorDeviceListResult.java` | 0.1192 |
| `cw-elevator-application-data/device/dto/AcsElevatorDeviceQueryFoDTO.java` | 0.1052 |
| `cw-elevator-application-data/device/dto/AcsElevatorDeviceResultDTO.java` | 0.1050 |
### 中-Mapper接口
| 路径 | 相似度 |
| --------------------------------------------------------------------------------- | ------ |
| `cw-elevator-application-data/device/mapper/DeviceImageStoreMapper.java` | 0.7928 |
| `cw-elevator-application-data/codeElevatorArea/mapper/AcsElevatorCodeMapper.java` | 0.7484 |
| `cw-elevator-application-data/device/mapper/AcsElevatorDeviceMapper.java` | 0.7018 |
| `cw-elevator-application-data/passrule/mapper/ImageRuleRefMapper.java` | 0.4948 |
### 中-其他
| 路径 | 相似度 |
| ----------------------------------------------------------------------------------------------- | ------ |
| `cw-elevator-application-service/export/ExcelCallback.java` | 0.8484 |
| `cw-elevator-application-data/YearlyShardingAlgorithm.java` | 0.8363 |
| `cw-elevator-application-data/codeElevatorArea/dao/AcsElevatorCodeDao.java` | 0.8298 |
| `cw-elevator-application-service/downloadcenter/AcsDownloadCenterService.java` | 0.8279 |
| `cw-elevator-application-data/passrule/dao/ImageRuleRefDao.java` | 0.8150 |
| `cw-elevator-application-common/util/DateUtils.java` | 0.8123 |
| `cw-elevator-application-service/codeElevatorArea/service/AcsElevatorCodeService.java` | 0.8121 |
| `cw-elevator-application-service/task/ElevatorRecordSendTask.java` | 0.8051 |
| `cw-elevator-application-service/export/utils/ExcelUtil.java` | 0.8050 |
| `cw-elevator-application-web/handler/OpenDoorRecordEventHandler.java` | 0.7811 |
| `cw-elevator-application-service/device/service/AcsDeviceTaskService.java` | 0.7681 |
| `cw-elevator-application-service/passrule/service/ImageRuleRefService.java` | 0.7673 |
| `cw-elevator-application-service/device/setting/service/AcsDeviceImageStoreAppBindService.java` | 0.7672 |
| `cw-elevator-application-common/util/StartTimeAndEndTime.java` | 0.7629 |
| `cw-elevator-application-service/device/service/AcsElevatorDeviceService.java` | 0.7468 |
| `cw-elevator-application-service/export/AcsAbstractExportAsyncService.java` | 0.7257 |
| `cw-elevator-application-service/passrule/service/AcsPassRuleService.java` | 0.7087 |
| `cw-elevator-application-service/person/service/PersonRuleService.java` | 0.7029 |
| `cw-elevator-application-service/person/service/AcsPersonService.java` | 0.6887 |
| `cw-elevator-application-service/AcsFeignConfiguration.java` | 0.5382 |
| `cw-elevator-application-common/util/RestTemplateUtil.java` | 0.5335 |
| `cw-elevator-application-common/util/StringUtils.java` | 0.5311 |
| `cw-elevator-application-common/util/CollectionUtils.java` | 0.5129 |
| `cw-elevator-application-service/common/AbstractAcsDeviceService.java` | 0.4027 |
| `cw-elevator-application-common/config/FeignThreadLocalUtil.java` | 0.3187 |
| `cw-elevator-application-common/util/CommunityConstants.java` | 0.1989 |
### 低-枚举(CFR噪声常见)
| 路径 | 相似度 |
| ------------------------------------------------------------------ | ------ |
| `cw-elevator-application-common/em/AcsApplicationSourceEnum.java` | 0.8372 |
| `cw-elevator-application-common/em/AcsPassTypeEnum.java` | 0.8155 |
| `cw-elevator-application-common/em/CompareTypeEnum.java` | 0.7955 |
| `cw-elevator-application-common/em/AcsDeviceSettingEnum.java` | 0.7651 |
| `cw-elevator-application-service/export/AcsFileStatusEnum.java` | 0.6657 |
| `cw-elevator-application-common/em/OpenDoorTypeEnum.java` | 0.5714 |
| `cw-elevator-application-common/em/EngineAddressEnum.java` | 0.5630 |
| `cw-elevator-application-common/em/AcsDeviceIdentifyTypeEnum.java` | 0.2052 |
| `cw-elevator-application-common/em/AcsDeviceQueryTypeEnum.java` | 0.2016 |
| `cw-elevator-application-common/em/AlarmStateCodeEnum.java` | 0.1399 |
### 高-Controller
| 路径 | 相似度 |
| ---------------------------------------------------------------------------------------------- | ------ |
| `cw-elevator-application-web/handler/device/controller/AcsElevatorRestructureController.java` | 0.7986 |
| `cw-elevator-application-web/handler/device/controller/AcsElevatorDeviceController.java` | 0.7094 |
| `cw-elevator-application-web/handler/device/controller/AcsElevatorDeviceGetWayController.java` | 0.6779 |
### 高-Service/DaoImpl
| 路径 | 相似度 |
| --------------------------------------------------------------------------------------- | ------ |
| `cw-elevator-application-service/record/impl/AcsRecogRecordServiceImpl.java` | 0.8440 |
| `cw-elevator-application-service/codeElevatorArea/impl/AcsElevatorCodeServiceImpl.java` | 0.8396 |
| `cw-elevator-application-service/person/impl/AcsPersonServiceImpl.java` | 0.8394 |
| `cw-elevator-application-service/device/setting/impl/AcsDeviceSettingServiceImpl.java` | 0.8205 |
| `cw-elevator-application-data/device/impl/AcsElevatorDeviceDaoImpl.java` | 0.8133 |
| `cw-elevator-application-service/passrule/impl/AcsPassRuleServiceImpl.java` | 0.7823 |
| `cw-elevator-application-data/passrule/impl/AcsPassRuleDaoImpl.java` | 0.7309 |
| `cw-elevator-application-service/record/impl/AcsElevatorRecordServiceImpl.java` | 0.7267 |
| `cw-elevator-application-service/person/impl/PersonRuleServiceImpl.java` | 0.6876 |
| `cw-elevator-application-service/passrule/impl/AbstractAcsPassService.java` | 0.6162 |
| `cw-elevator-application-service/device/impl/AcsElevatorDeviceServiceImpl.java` | 0.5556 |
| `cw-elevator-application-service/device/impl/AcsDeviceTaskServiceImpl.java` | 0.4644 |
| `cw-elevator-application-service/passrule/impl/ImageRuleRefServiceImpl.java` | 0.4616 |
| `cw-elevator-application-data/record/impl/AcsElevatorRecordDaoImpl.java` | 0.4350 |
## 4. 完整配对表(全部类)
| 模块 | 相对路径 | 相似度 | 分桶 | 复核优先级 |
| ------------------------------- | ------------------------------------------------------------------ | ------ | ------ | ----------------- |
| cw-elevator-application-common | `annontation/DavinciPic.java` | 0.9788 | B-轻度差异 | 中-其他 |
| cw-elevator-application-common | `cache/CacheOverrideConfig.java` | 0.9963 | A-高度一致 | 中-其他 |
| cw-elevator-application-common | `config/AcsConstants.java` | 0.9621 | B-轻度差异 | 中-其他 |
| cw-elevator-application-common | `config/AcsLockConstants.java` | 0.9638 | B-轻度差异 | 中-其他 |
| cw-elevator-application-common | `config/ElevatorCwosConfig.java` | 0.9978 | A-高度一致 | 中-其他 |
| cw-elevator-application-common | `config/ErrorCode.java` | 0.9992 | A-高度一致 | 中-其他 |
| cw-elevator-application-common | `config/FeignRemoteConfig.java` | 0.9671 | B-轻度差异 | 中-其他 |
| cw-elevator-application-common | `config/FeignThreadLocalUtil.java` | 0.3187 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `config/ImageStoreConstants.java` | 0.8973 | B-轻度差异 | 中-其他 |
| cw-elevator-application-common | `context/CloudWalkExtendContextValue.java` | 1.0000 | A-高度一致 | 中-其他 |
| cw-elevator-application-common | `em/AcsApplicationSourceEnum.java` | 0.8372 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsDeviceIdentifyTypeEnum.java` | 0.2052 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsDeviceQueryTypeEnum.java` | 0.2016 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsDeviceSettingEnum.java` | 0.7651 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsOpenDoorStatusEnum.java` | 0.8564 | B-轻度差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsOperateStatusEnum.java` | 0.8728 | B-轻度差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsOperateTypeEnum.java` | 0.8824 | B-轻度差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AcsPassTypeEnum.java` | 0.8155 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/AlarmStateCodeEnum.java` | 0.1399 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/CompareTypeEnum.java` | 0.7955 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/EngineAddressEnum.java` | 0.5630 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/OpenDoorTypeEnum.java` | 0.5714 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `em/YesNoTypeEnum.java` | 0.8932 | B-轻度差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-common | `util/AcsCacheKeyUtil.java` | 1.0000 | A-高度一致 | 中-其他 |
| cw-elevator-application-common | `util/CollectionUtils.java` | 0.5129 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `util/CommunityConstants.java` | 0.1989 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `util/DateUtils.java` | 0.8123 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `util/JsonUtils.java` | 0.9024 | B-轻度差异 | 中-其他 |
| cw-elevator-application-common | `util/RestTemplateUtil.java` | 0.5335 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `util/StartTimeAndEndTime.java` | 0.7629 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `util/StringUtils.java` | 0.5311 | C-显著差异 | 中-其他 |
| cw-elevator-application-common | `util/ToolUtil.java` | 0.9268 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `YearlyShardingAlgorithm.java` | 0.8363 | C-显著差异 | 中-其他 |
| cw-elevator-application-data | `codeElevatorArea/dao/AcsElevatorCodeDao.java` | 0.8298 | C-显著差异 | 中-其他 |
| cw-elevator-application-data | `codeElevatorArea/dto/AcsElevatorCodeDTO.java` | 0.9974 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `codeElevatorArea/dto/AcsElevatorCodeQueryDTO.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `codeElevatorArea/dto/AcsElevatorCodeResultDTO.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `codeElevatorArea/impl/AcsElevatorCodeDaoImpl.java` | 0.9054 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `codeElevatorArea/mapper/AcsElevatorCodeMapper.java` | 0.7484 | C-显著差异 | 中-Mapper接口 |
| cw-elevator-application-data | `device/dao/AcsDeviceTaskDao.java` | 0.8515 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `device/dao/AcsElevatorDeviceDao.java` | 0.8537 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `device/dao/DeviceImageStoreDao.java` | 0.8980 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `device/dto/AcsDeviceQueryDTO.java` | 0.9995 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsDeviceResultDTO.java` | 0.9986 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsDeviceTaskAddDto.java` | 0.9974 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsDeviceTaskDTO.java` | 0.9987 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceAddDTO.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceEditDTO.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceListByBuildingIdDto.java` | 0.6078 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceListDto.java` | 0.9975 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceListResultDto.java` | 0.1215 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceQueryByIdDTO.java` | 0.9940 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceQueryDTO.java` | 0.9989 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceQueryFoDTO.java` | 0.1052 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceQueryResultDTO.java` | 0.9967 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `device/dto/AcsElevatorDeviceResultDTO.java` | 0.1050 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `device/impl/AcsDeviceTaskDaoImpl.java` | 0.9785 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `device/impl/AcsElevatorDeviceDaoImpl.java` | 0.8133 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `device/impl/DeviceImageStoreDaoImpl.java` | 0.9856 | A-高度一致 | 高-Service/DaoImpl |
| cw-elevator-application-data | `device/mapper/AcsDeviceTaskMapper.java` | 0.8535 | B-轻度差异 | 中-Mapper接口 |
| cw-elevator-application-data | `device/mapper/AcsElevatorDeviceMapper.java` | 0.7018 | C-显著差异 | 中-Mapper接口 |
| cw-elevator-application-data | `device/mapper/DeviceImageStoreMapper.java` | 0.7928 | C-显著差异 | 中-Mapper接口 |
| cw-elevator-application-data | `passrule/dao/AcsPassRuleDao.java` | 0.8710 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `passrule/dao/ImageRuleRefDao.java` | 0.8150 | C-显著差异 | 中-其他 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleAddDto.java` | 0.9989 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleDeleteDto.java` | 0.9991 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleEditDto.java` | 0.9986 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleImageDto.java` | 0.9984 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleImageResultDto.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleIsDefaultDto.java` | 0.9966 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleLabelResultDto.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRulePersonListDto.java` | 0.9990 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRulePersonListResultDto.java` | 0.9341 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleQueryDto.java` | 0.9992 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/AcsPassRuleResultDto.java` | 0.9989 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/ImageRuleRefAddDto.java` | 0.1342 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/ImageRuleRefListResult.java` | 0.2072 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/dto/ImageRuleRefResultDto.java` | 0.3893 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `passrule/impl/AcsPassRuleDaoImpl.java` | 0.7309 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `passrule/impl/ImageRuleRefDaoImpl.java` | 0.9646 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `passrule/mapper/AcsPassRuleMapper.java` | 0.8959 | B-轻度差异 | 中-Mapper接口 |
| cw-elevator-application-data | `passrule/mapper/ImageRuleRefMapper.java` | 0.4948 | C-显著差异 | 中-Mapper接口 |
| cw-elevator-application-data | `record/dao/AcsElevatorRecordDao.java` | 0.9100 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `record/dao/AcsPersonInfoDao.java` | 0.9936 | A-高度一致 | 中-其他 |
| cw-elevator-application-data | `record/dao/AcsRecogRecordDao.java` | 0.9237 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `record/dao/SendRecordTimeDao.java` | 0.9168 | B-轻度差异 | 中-其他 |
| cw-elevator-application-data | `record/dto/AcsElevatorAnalyseCycleBusinessResultDTO.java` | 0.9982 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorPageRequestInfoResultDTO.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorQueryCountDTO.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorRecordAddDTO.java` | 0.9981 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorRecordDetailQueryDTO.java` | 0.9996 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorRecordDetailQueryResultDTO.java` | 0.9982 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorRecordExtraDTO.java` | 0.9982 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsElevatorRecordQueryResultDTO.java` | 0.9979 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsOpenDoorRecordEditDTO.java` | 0.9976 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsOpenDoorRecordQueryDTO.java` | 0.9991 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsPersonInfoResultDTO.java` | 0.9977 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsRecogRecordAddDTO.java` | 0.9979 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsRecogRecordPageDTO.java` | 0.5121 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsRecogRecordResultDTO.java` | 0.9993 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsRecordDetailQueryResultDTO.java` | 0.9998 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/AcsRecordThreeSendQueryDTO.java` | 0.9985 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/SendRecordTimeAddDTO.java` | 0.9973 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/SendRecordTimeEditDTO.java` | 0.9973 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/dto/SendRecordTimeResultDTO.java` | 0.9973 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-data | `record/impl/AcsElevatorRecordDaoImpl.java` | 0.4350 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `record/impl/AcsRecogRecordDaoImpl.java` | 0.8742 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `record/impl/SendRecordTimeDaoImpl.java` | 0.8790 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-data | `record/mapper/AcsElevatorRecordMapper.java` | 0.8761 | B-轻度差异 | 中-Mapper接口 |
| cw-elevator-application-data | `record/mapper/AcsRecogRecordMapper.java` | 0.9024 | B-轻度差异 | 中-Mapper接口 |
| cw-elevator-application-data | `record/mapper/SendRecordTimeMapper.java` | 0.8994 | B-轻度差异 | 中-Mapper接口 |
| cw-elevator-application-service | `AcsFeignConfiguration.java` | 0.5382 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `cacheable/AcsAreaTreeCacheableService.java` | 0.9970 | A-高度一致 | 中-其他 |
| cw-elevator-application-service | `codeElevatorArea/impl/AcsElevatorCodeServiceImpl.java` | 0.8396 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `codeElevatorArea/param/AcsElevatorCodeParam.java` | 0.9974 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `codeElevatorArea/result/AcsElevatorCodeResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `codeElevatorArea/service/AcsElevatorCodeService.java` | 0.8121 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `common/AbstractAcsDeviceService.java` | 0.4027 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `common/AbstractCloudwalkService.java` | 0.9972 | A-高度一致 | 中-其他 |
| cw-elevator-application-service | `common/AcsApplicationServiceImpl.java` | 0.9534 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `common/UpdateFloorsPoolProperties.java` | 0.9992 | A-高度一致 | 中-其他 |
| cw-elevator-application-service | `common/UpdateFloorsTaskExecutor.java` | 0.9109 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `common/service/AcsApplicationService.java` | 0.9479 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `device/impl/AcsDeviceTaskServiceImpl.java` | 0.4644 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `device/impl/AcsElevatorDeviceServiceImpl.java` | 0.5556 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `device/param/AcsDeviceQueryParam.java` | 0.9972 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsDeviceRestructureTaskParam.java` | 0.2992 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsElevatorDeviceAddParam.java` | 0.9981 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsElevatorDeviceEditParam.java` | 0.9985 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsElevatorDeviceListParam.java` | 0.9968 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsElevatorDeviceQueryByIdParam.java` | 0.9941 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsElevatorDeviceQueryParam.java` | 0.9988 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsRestructureBindingParam.java` | 0.4817 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/param/AcsRestructureQueryParam.java` | 0.5047 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/result/AcsDeviceNewResult.java` | 0.9997 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/result/AcsDeviceRestructureResult.java` | 0.4909 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/result/AcsElevatorDeviceListResult.java` | 0.1192 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/result/AcsElevatorDeviceResult.java` | 0.9996 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/result/AcsLabelElevatorResult.java` | 0.2838 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/result/KeyValueResult.java` | 0.6397 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/service/AcsDeviceTaskService.java` | 0.7681 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `device/service/AcsElevatorDeviceService.java` | 0.7468 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `device/setting/impl/AcsDeviceImageStoreAppBindServiceImpl.java` | 0.8935 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `device/setting/impl/AcsDeviceSettingServiceImpl.java` | 0.8205 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `device/setting/param/AcsDeviceTemperatureSettingParam.java` | 0.9948 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/setting/param/DeviceImageStoreAppBindParam.java` | 0.9986 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/setting/param/DeviceImageStoreAppUnbindParam.java` | 0.9988 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/setting/result/AcsDeviceSettingResult.java` | 0.9077 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `device/setting/result/AcsSettingAttr.java` | 0.9990 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `device/setting/service/AcsDeviceImageStoreAppBindService.java` | 0.7672 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `device/setting/service/AcsDeviceSettingService.java` | 0.9334 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `downloadcenter/AcsDownloadCenterService.java` | 0.8279 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `downloadcenter/impl/AcsDownloadCenterServiceImpl.java` | 0.8874 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `downloadcenter/param/AcsFileFinishParam.java` | 0.9991 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `export/AcsAbstractExportAsyncService.java` | 0.7257 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `export/AcsFileStatusEnum.java` | 0.6657 | C-显著差异 | 低-枚举(CFR噪声常见) |
| cw-elevator-application-service | `export/ExcelAttribute.java` | 0.9425 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `export/ExcelCallback.java` | 0.8484 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `export/impl/ElevatorDeviceExportService.java` | 0.8853 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `export/result/ElevatorDeviceRecordExcelResult.java` | 0.1998 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `export/utils/ExcelUtil.java` | 0.8050 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `export/utils/FolderUtils.java` | 0.9243 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `mqtt/client/MqttFeignClient.java` | 0.9696 | B-轻度差异 | 高-Feign/Client |
| cw-elevator-application-service | `mqtt/fallback/MqttFeignClientFallback.java` | 0.9606 | B-轻度差异 | 高-Feign/Client |
| cw-elevator-application-service | `mqtt/impl/MqttServiceImpl.java` | 0.9046 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `mqtt/param/AcsElevatorRecordMqttParam.java` | 0.2772 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `mqtt/param/MqttSendMessageParam.java` | 0.6788 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `mqtt/service/MqttService.java` | 0.9315 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `passrule/impl/AbstractAcsPassService.java` | 0.6162 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `passrule/impl/AcsPassRuleServiceImpl.java` | 0.7823 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `passrule/impl/ImageRuleRefServiceImpl.java` | 0.4616 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `passrule/param/AcsPassRuleDeleteParam.java` | 0.9973 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRuleEditParam.java` | 0.9973 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRuleFloorParam.java` | 0.9953 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRuleImageParam.java` | 0.9992 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRuleIsDefaultParam.java` | 0.9971 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRuleNewParam.java` | 0.9976 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRulePersonListParam.java` | 0.8149 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassRuleQueryParam.java` | 0.9991 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassTimeAddParam.java` | 0.8347 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassTimeCycleParam.java` | 0.8399 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassTimeDeleteParam.java` | 0.9955 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassTimeEditParam.java` | 0.8509 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassTimeParam.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/param/AcsPassTimeQueryParam.java` | 0.9949 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/result/AcsPassRuleDetailResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/result/AcsPassRuleFloorResult.java` | 0.5020 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/result/AcsPassRuleResult.java` | 0.9997 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/result/ImageRuleRefDetailResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/result/ImageRuleRefPageResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `passrule/service/AcsPassRuleService.java` | 0.7087 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `passrule/service/ImageRuleRefService.java` | 0.7673 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `person/impl/AcsPersonServiceImpl.java` | 0.8394 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `person/impl/PersonRuleServiceImpl.java` | 0.6876 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `person/param/AcsPersonAddNewParam.java` | 0.8391 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonAddParam.java` | 0.9983 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonAddVisitorParam.java` | 0.2339 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonCheckTimeParam.java` | 0.9986 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonDeleteParam.java` | 0.9975 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonDetailParam.java` | 0.9965 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonEditParam.java` | 0.9972 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonFaceParam.java` | 0.9952 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonPropertiesParam.java` | 0.9997 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonQueryByAppParam.java` | 0.9963 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonQueryParam.java` | 0.4166 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/AcsPersonTimeDetailParam.java` | 0.9968 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/param/PersonDetailQueryParam.java` | 0.5849 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsAppResult.java` | 0.9988 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsImageStoreStatisticsResult.java` | 0.9987 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsImagestorePersonStatisticsResult.java` | 0.7986 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsPersonDetailResult.java` | 0.8917 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsPersonFaceResult.java` | 0.9975 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsPersonResult.java` | 0.9997 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AcsPersonTimeDetailResult.java` | 0.9994 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `person/result/AppImageStoreStatisticsResult.java` | 0.9212 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `person/service/AcsPersonService.java` | 0.6887 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `person/service/PersonRuleService.java` | 0.7029 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `record/impl/AcsElevatorRecordServiceImpl.java` | 0.7267 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `record/impl/AcsRecogRecordServiceImpl.java` | 0.8440 | C-显著差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `record/impl/PersonFileServiceImpl.java` | 0.9774 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `record/impl/SendRecordTimeServiceImpl.java` | 0.9959 | A-高度一致 | 高-Service/DaoImpl |
| cw-elevator-application-service | `record/param/AcsElevatorRecordAddParam.java` | 0.9983 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/AcsElevatorRecordAnalyseCountParam.java` | 0.9957 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/AcsElevatorRecordAnalyseCycleParam.java` | 0.9914 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/AcsElevatorRecordDetailParam.java` | 0.9988 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/AcsOpenDoorRecordAddParam.java` | 0.9977 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/AcsOpenDoorRecordEditParam.java` | 0.9977 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/AcsRecogRecordAddParam.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/SendRecordSendInfoParam.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/SendRecordSendParam.java` | 0.9039 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `record/param/SendRecordTokenParam.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/result/AcsElevatorAnalyseCycleBusinessResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/result/AcsElevatorAnalyseCycleResult.java` | 0.9293 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `record/result/AcsElevatorPageRequestInfoResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/result/AcsElevatorRecordResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/result/SendRecordTokenResult.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `record/result/VisitorRecordPushEvent.java` | 0.9119 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `record/service/AcsElevatorRecordService.java` | 0.8857 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `record/service/AcsRecogRecordService.java` | 0.8765 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `record/service/PersonFileService.java` | 0.8743 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `record/service/SendRecordTimeService.java` | 0.9943 | A-高度一致 | 中-其他 |
| cw-elevator-application-service | `storage/AcsFileStorageService.java` | 0.9290 | B-轻度差异 | 中-其他 |
| cw-elevator-application-service | `storage/impl/AcsFileStorageServiceImpl.java` | 0.9357 | B-轻度差异 | 高-Service/DaoImpl |
| cw-elevator-application-service | `task/ElevatorRecordSendTask.java` | 0.8051 | C-显著差异 | 中-其他 |
| cw-elevator-application-service | `visitor/client/VisitorFeignClient.java` | 0.9706 | B-轻度差异 | 高-Feign/Client |
| cw-elevator-application-service | `visitor/fallback/VisitorFeignClientFallback.java` | 0.9459 | B-轻度差异 | 高-Feign/Client |
| cw-elevator-application-service | `visitor/param/VisitorGetsParam.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `visitor/param/VisitorRecordQueryForm.java` | 1.0000 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `visitor/param/VisitorRecordQueryParam.java` | 0.9967 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `visitor/result/VisitorQueryResult.java` | 0.8717 | B-轻度差异 | 中-DTO表单 |
| cw-elevator-application-service | `visitor/result/VisitorRecordResult.java` | 0.9998 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `visitor/result/VisitorResult.java` | 0.9996 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `zone/client/ZoneFeignClient.java` | 0.9672 | B-轻度差异 | 高-Feign/Client |
| cw-elevator-application-service | `zone/fallback/ZoneFeignClientFallback.java` | 0.9279 | B-轻度差异 | 高-Feign/Client |
| cw-elevator-application-service | `zone/impl/ZoneServiceImpl.java` | 0.9880 | A-高度一致 | 高-Service/DaoImpl |
| cw-elevator-application-service | `zone/param/ZoneNextTreeParam.java` | 0.9853 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `zone/param/ZoneQueryParam.java` | 0.9938 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `zone/result/AgImageUploadResult.java` | 0.9977 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `zone/result/ZoneResult.java` | 0.9990 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `zone/result/ZoneTreeResult.java` | 0.9998 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-service | `zone/service/ZoneService.java` | 0.8729 | B-轻度差异 | 中-其他 |
| cw-elevator-application-web | `common/AbstractCloudwalkController.java` | 0.9465 | B-轻度差异 | 高-Controller |
| cw-elevator-application-web | `common/CloudwalkCallNewContext.java` | 0.9935 | A-高度一致 | 中-其他 |
| cw-elevator-application-web | `handler/AbstractEventHandler.java` | 0.9448 | B-轻度差异 | 中-其他 |
| cw-elevator-application-web | `handler/OpenDoorRecordEventHandler.java` | 0.7811 | C-显著差异 | 中-其他 |
| cw-elevator-application-web | `handler/PersonRecordEventHandler.java` | 0.8953 | B-轻度差异 | 中-其他 |
| cw-elevator-application-web | `handler/device/controller/AcsElevatorDeviceController.java` | 0.7094 | C-显著差异 | 高-Controller |
| cw-elevator-application-web | `handler/device/controller/AcsElevatorDeviceGetWayController.java` | 0.6779 | C-显著差异 | 高-Controller |
| cw-elevator-application-web | `handler/device/controller/AcsElevatorRestructureController.java` | 0.7986 | C-显著差异 | 高-Controller |
| cw-elevator-application-web | `handler/device/controller/FileController.java` | 0.9112 | B-轻度差异 | 高-Controller |
| cw-elevator-application-web | `handler/device/form/AcsDeviceQueryForm.java` | 0.9973 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsDeviceRestructureTaskForm.java` | 0.5446 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorCodeForm.java` | 0.9974 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorCodeQueryForm.java` | 0.9960 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorDeviceAddForm.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorDeviceDeleteForm.java` | 0.9948 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorDeviceEditForm.java` | 0.9985 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorDeviceQueryByIdForm.java` | 0.9942 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorDeviceQueryForm.java` | 0.9988 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsElevatorRecordAddForm.java` | 0.9984 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsRestructureBindingForm.java` | 0.4876 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `handler/device/form/AcsRestructureQueryForm.java` | 0.5049 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/controller/AcsPassRuleController.java` | 0.8956 | B-轻度差异 | 高-Controller |
| cw-elevator-application-web | `passrule/form/AcsPassRuleDeleteForm.java` | 0.9984 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/form/AcsPassRuleEditForm.java` | 0.9995 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/form/AcsPassRuleFloorForm.java` | 0.9952 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/form/AcsPassRuleImageForm.java` | 0.9992 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/form/AcsPassRuleNewForm.java` | 0.9994 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/form/AcsPassRulePersonListForm.java` | 0.8235 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `passrule/form/AcsPassRuleQueryForm.java` | 0.9853 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/controller/AcsPersonController.java` | 0.9087 | B-轻度差异 | 高-Controller |
| cw-elevator-application-web | `person/form/AcsPersonAddForm.java` | 0.9990 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonAddNewForm.java` | 0.9990 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonAddVisitorForm.java` | 0.2385 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonDeleteForm.java` | 0.9990 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonDetailForm.java` | 0.9979 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonEditForm.java` | 0.9989 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonFaceForm.java` | 0.9980 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonQueryForm.java` | 0.1247 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/AcsPersonTimeDetailForm.java` | 0.9981 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `person/form/PersonDetailQueryForm.java` | 0.5835 | C-显著差异 | 中-DTO表单 |
| cw-elevator-application-web | `record/controller/AcsElevatorRecordController.java` | 0.9023 | B-轻度差异 | 高-Controller |
| cw-elevator-application-web | `record/form/AcsElevatorRecordAnalyseCountForm.java` | 0.9983 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `record/form/AcsElevatorRecordAnalyseCycleForm.java` | 0.9978 | A-高度一致 | 中-DTO表单 |
| cw-elevator-application-web | `record/form/AcsElevatorRecordQueryForm.java` | 0.9985 | A-高度一致 | 中-DTO表单 |
### 仅 V1 / 仅 Maven 行
- `cw-elevator-application-common/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-data/device/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-data/person/dao/TenantVisitorFloorPolicyDao.java`**ONLY_MAVEN** — V2扩展-租户访客楼层
- `cw-elevator-application-data/person/dto/TenantVisitorFloorPolicyDto.java`**ONLY_MAVEN** — V2扩展-租户访客楼层
- `cw-elevator-application-data/person/impl/TenantVisitorFloorPolicyDaoImpl.java`**ONLY_MAVEN** — V2扩展-租户访客楼层
- `cw-elevator-application-data/person/mapper/TenantVisitorFloorPolicyMapper.java`**ONLY_MAVEN** — V2扩展-租户访客楼层
- `cw-elevator-application-service/CloudwalkSessionHolderConfiguration.java`**ONLY_MAVEN** — V2扩展-Session
- `cw-elevator-application-service/common/ElevatorRemoteIoExecutorConfig.java`**ONLY_MAVEN** — V2扩展-远程IO线程池
- `cw-elevator-application-service/common/ElevatorRemoteIoPoolProperties.java`**ONLY_MAVEN** — V2扩展-远程IO线程池
- `cw-elevator-application-service/common/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/device/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/mqtt/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/passrule/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/person/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/record/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/visitor/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-service/zone/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-web/handler/device/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-web/handler/package-info.java`**ONLY_MAVEN** — 工程化-package-info
- `cw-elevator-application-web/zone/util/ZoneTreeCollectors.java`**ONLY_MAVEN** — V2独有-工具类
## 5. 生成命令
```bash
cd maven-cw-elevator-application
./scripts/decompile_v1_elevator_jars.sh # 若尚未反编译 V1 jar
python3 tools/elevator_api_parity/scripts/v1_v2_diff_issues_report.py
```
@@ -0,0 +1,39 @@
# IMPL_DIFF 深挖与定责(2026-04-28
- 数据源:`V1-V2-BYTECODE-ROOTCAUSE.json` + `impl-diff-evidence-20260428/*`
- 归一化增强后(去跳转偏移/槽位号噪声):`IMPL_DIFF 13 -> 11``MATCH 244 -> 246`
- 说明:此前部分差异属于字节码文本噪声,不是语义差异。
## 1) 本轮修正动作
- 已修复依赖链伪差异:显式引入 `intelligent-cwoscomponent-interface`(父 POM + service 模块)。
- 已回退 `AcsElevatorDeviceGetWayController` 的 39202/39204 到 V1 行为;该类已不在 IMPL_DIFF 列表。
- 已增强比对归一化算法,消除跳转地址和局部槽位导致的误报。
## 2) 剩余 11 个 IMPL_DIFF 定责
| 类 | diff_lines | 初步定责 |
|---|---:|---|
| `cn.cloudwalk.elevator.util.StringUtils` | 536 | 高疑似还原漂移(工具类重写痕迹重,建议以 V1 class 反推修正) |
| `cn.cloudwalk.elevator.export.utils.ExcelUtil` | 377 | 高疑似还原漂移(导出工具字节码差异大) |
| `cn.cloudwalk.elevator.util.DateUtils` | 373 | 高疑似还原漂移(时间工具实现差异大) |
| `cn.cloudwalk.elevator.device.impl.AcsElevatorDeviceServiceImpl` | 269 | 中高风险实现漂移(业务服务实现差异大) |
| `cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler` | 45 | 事件处理逻辑调整(条件分支/调用指令变化) |
| `cn.cloudwalk.elevator.common.AbstractCloudwalkController` | 26 | 防御性增强(空请求属性兜底、消息回退) |
| `cn.cloudwalk.elevator.task.ElevatorRecordSendTask` | 22 | 集合调用与异常表小幅变化,偏工程性 |
| `cn.cloudwalk.elevator.handler.PersonRecordEventHandler` | 18 | 调用指令由 invokespecial->invokevirtual,需确认是否影响多态 |
| `cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor` | 14 | 线程池新增 keepAliveSeconds,属有意调优 |
| `cn.cloudwalk.elevator.handler.device.controller.FileController` | 14 | 常量池索引噪声级差异(几乎可忽略) |
| `cn.cloudwalk.elevator.common.AcsApplicationServiceImpl` | 11 | 常量池/指令对齐噪声级差异(几乎可忽略) |
## 3) 处理优先级(先大后小)
1. **P0(先修)**`StringUtils``DateUtils``ExcelUtil``AcsElevatorDeviceServiceImpl`
2. **P1(复核)**`OpenDoorRecordEventHandler``AbstractCloudwalkController``ElevatorRecordSendTask`
3. **P2(可后置)**`PersonRecordEventHandler``UpdateFloorsTaskExecutor``FileController``AcsApplicationServiceImpl`
## 4) 下一步建议(可直接执行)
- 对 P0 四类做“方法级回归修复”:以 `impl-diff-evidence-20260428/*.diff.txt` 为依据,逐方法回贴 V1 语义。
- 每修一个类即重新 `mvn -q -DskipTests package` + `bytecode_parity_rootcause.py`,确认 IMPL_DIFF 递减。
- 目标:先把 `IMPL_DIFF` 压到 <=5,再评估是否需要继续追求 0。
@@ -0,0 +1,136 @@
# V1/V2 修复复盘总表(2026-04-28
## 1. 复盘目标与结论
- 目标:复盘本轮 V2 为对齐 V1 所做修复,明确“改动点、差异点、风险点、后续收敛路径”。
- 结论:本轮属于**运行时行为对齐修复**,非核心业务重写;通过配置补齐与最小控制层兜底,实现 8 项差异接口 `old/new` 业务码一致。
---
## 2. 改动清单总览
| 类别 | 文件 | 改动摘要 | 目的 |
| -------- | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------ |
| 启动/Feign | `cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/ElevatorApplication.java` | `@RibbonClient` 扩展为 `@RibbonClients`,覆盖 `ninca-crk-std` / `cwos-portal` / `ninca-common-component-organization` | 修复 Feign 无可用实例 |
| 过滤器 | `cw-elevator-application-starter/src/main/java/cn/cloudwalk/web/filter/CloudwalkContextParameterFilter.java`(新增) | 每请求构建/清理 Cloudwalk Session 上下文 | 避免异常链路出现空响应体,稳定上下文 |
| 人员接口 | `cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/person/controller/AcsPersonController.java` | `/add``/edit``/pageByApp` 增加缺参兜底返回 | 对齐 V1 缺参业务码 |
| 规则接口 | `cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/passrule/controller/AcsPassRuleController.java` | `/add` 增加缺参兜底返回 | 对齐 V1 缺参业务码 |
| 记录接口 | `cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/record/controller/AcsElevatorRecordController.java` | `/analyse/cycle``/analyse/count` 缺参兜底;`/page``/page/request` 增加可开关空结果映射 | 对齐 V1 行为 |
| 部署配置 | `deploy/v2-maven/application.properties` | 补齐 Feign/Ribbon 静态实例 + 兼容开关配置 | 运行态可达性与行为一致性 |
---
## 3. V1/V2 差异总表(修复前 -> 修复后)
| 维度 | 修复前 V2 相对 V1 | 修复后状态 | 风险等级 |
| ---------- | -------------------------------------------------------------------------- | ------------------------------------ | ---- |
| Feign 实例发现 | `cwos-portal``ninca-common-component-organization` 无可用实例,出现 `200 + 空body` | 已补齐 Ribbon 配置 + 启动类注册,返回进入正常 JSON 链路 | 中 |
| 参数校验行为 | 部分接口未在参数层提前失败,进入深层逻辑返回其他码 | 控制层最小兜底,缺参业务码对齐 V1 | 中 |
| 记录接口空结果语义 | V2 空结果返回成功;V1 在历史环境常表现为错误码 | 通过兼容开关可映射到 V1 错误码 | 中 |
| 代码主体一致性 | 核心 Controller/Service 主体与 V1大体一致 | 仍保持一致;新增的是兼容逻辑与配置 | 低 |
---
## 4. 配置差异总表(重点)
### 4.1 本轮新增/调整配置(V2)
| 配置键 | 当前值 | 作用 | 与 V1 关系 |
| -------------------------------------------------------------------- | ------------------------------------------------------- | ------------------ | ------------------- |
| `feign.portal.name` | `cwos-portal` | 明确 Feign 服务名映射 | V1 运行态隐式可用,V2 需显式补齐 |
| `cwos-portal.ribbon.NIWSServerListClassName` | `com.netflix.loadbalancer.ConfigurationBasedServerList` | 强制走配置型服务列表 | V1 表现上等效可用 |
| `cwos-portal.ribbon.listOfServers` | `10.128.161.95:80` | 指定目标实例 | V1 环境下等效可达链路 |
| `ninca-common-component-organization.ribbon.NIWSServerListClassName` | `com.netflix.loadbalancer.ConfigurationBasedServerList` | 强制走配置型服务列表 | V1 表现上等效可用 |
| `ninca-common-component-organization.ribbon.listOfServers` | `10.128.161.95:80` | 指定目标实例 | V1 环境下等效可达链路 |
| `elevator.compat.v1.record-empty-as-error` | `true`(对拍环境) | 将记录接口空结果映射为 V1 错误码 | V1行为兼容开关(V2新增) |
### 4.2 建议的环境取值
| 环境 | `elevator.compat.v1.record-empty-as-error` | 说明 |
| ----- | ------------------------------------------ | --------------------------- |
| 对拍/回归 | `true` | 优先保证 V1/V2 业务码一致 |
| 生产收敛 | `false`(建议) | 采用“空数据成功返回空列表”语义,减少历史异常语义绑定 |
---
## 5. 行为差异总表(接口视角)
| 接口 | 修复前差异 | 修复后结果 |
| ----------------------------------------------------- | ------------------------------- | ------------------- |
| `POST /elevator/person/add` | `old=76260405` / `new=76260527` | 对齐:`76260405` |
| `POST /elevator/person/edit` | `old=76260418` / `new=None` | 对齐:`76260418` |
| `POST /elevator/person/pageByApp` | `old=76260402` / `new=None` | 对齐:`76260402` |
| `POST /elevator/passRule/add` | `old=76260514` / `new=76260527` | 对齐:`76260514` |
| `POST /intelligent/acs/elevator/record/analyse/cycle` | `old=76260333` / `new=00000000` | 对齐:`76260333` |
| `POST /intelligent/acs/elevator/record/analyse/count` | `old=76260336` / `new=00000000` | 对齐:`76260336` |
| `POST /intelligent/acs/elevator/record/page` | `old=76260305` / `new=00000000` | 对齐:`76260305`(开关开启) |
| `POST /intelligent/acs/elevator/record/page/request` | `old=76260335` / `new=00000000` | 对齐:`76260335`(开关开启) |
---
## 6. 风险与技术债
### 6.1 当前风险
1. 控制层兜底校验属于“兼容补丁”,不等价于完全恢复原始 AOP 参数校验链路。
2. `record-empty-as-error` 为行为映射开关,若长期保持开启,可能固化历史异常语义。
3. 静态 `listOfServers` 对网络与目标服务可达性有耦合,环境迁移需同步更新。
### 6.2 技术债建议
1. 排查并恢复 `@CloudwalkParamsValidate` 在 V2 的完整生效链路(代理类型、切面装配、调用入口)。
2. 对 record 类接口定义最终产品语义(空数据成功 vs 按历史错误码),并统一基线。
3. 将外部依赖地址配置化分层(dev/test/prod),减少硬编码地址漂移风险。
---
## 7. 推荐下一步(收敛计划)
1. **短期(本周)**:固化回归脚本,确保 8 项关键接口作为门禁用例。
2. **中期(两周)**:完成 AOP 参数校验链路恢复,逐步替换控制层兜底。
3. **长期(版本收敛)**:关闭 `record-empty-as-error`,采用统一成功空结果语义并更新对拍标准。
---
## 8. 关联文档
- `tools/elevator_api_parity/report/DIFF-ROOTCAUSE-20260428.md`
- `tools/elevator_api_parity/report/parity-full-20260428-102136.json`
---
## 9. 方案勘误(2026-04-28
### 9.1 错误前提
- **误认为**:在同一工作区里修改「其他 Maven 子模块」(例如单独拉下来的 `maven-cloudwalk-cloud``cloudwalk-common-service` 源码),打包电梯应用时会自动带上这些改动。
- **实际情况**:电梯 fat-jar 使用的是 **Maven 解析到的依赖坐标与版本**(通常来自私服 Nexus)。只要 `pom.xml` 仍指向**旧版本** GAV,打包只会嵌入已发布的字节码;**本地改动的兄弟仓库源码不会进入制品**,除非:
- 升级对应依赖版本并安装/发布新版本到私服,且电梯工程引用该新版本;或
- 该代码本来就属于电梯多模块 reactor 内的模块并以源码编译进同一 artifact。
### 9.2 由此失效/需撤回的方案要素
1. **依赖「只改 cloud 公共模块源码、不升版本」的修复路径** — 对「生产仅替换 `cw-elevator-application-*.jar`」场景 **无效**
2. **Starter 内桥接切面 `CloudwalkParamsValidateBridgeAspect` + 扩展 `ElevatorApplication` / 额外 Filter 包扫描** — 已从当前分支工作区 **撤回**(恢复为仓库已提交版本);后续若再做校验链路修复,须明确落在 **会打进电梯 jar 的模块**内,且不假设未发布的依赖变更已生效。
3. **复盘文档第 2~7 节中涉及「兼容开关 `elevator.compat.v1.record-empty-as-error`、Controller 兜底」等表述** — 若与当前仓库 HEAD 不一致,以 **Git 仓库实际代码与部署约束**为准;本节作为对错误方案的更正说明保留。
### 9.3 后续正确约束(与生产对齐)
| 约束 | 含义 |
| ------- | ---------------------------------------------------------------------- |
| 仅换 jar | 有效改动必须落在 **电梯应用 reactor 打出 fat-jar 所包含的源码**(或同步升级并在私服可用的依赖版本)。 |
| 禁止随意加配置 | `application.properties` 新增项若生产无法下发,则不能在方案中依赖该开关。 |
| 证据链 | 差异分析应落到 **实际打进 jar 的类**(必要时对产物 `jar tf` / `javap` 核对),而不是仅改兄弟仓库未发布的源码。 |
@@ -0,0 +1,134 @@
# V1 原始程序 vs V2(基于 JD-GUI 复原源码编译)差异根因与修正(2026-04-28)
## 1. 本轮目标
不是继续做“表层 diff”,而是回答:
1) 差异来自 JD-GUI 还原偏差,还是其他因素?
2) 哪些差异是构建/依赖问题导致的“伪差异”?
3) 如何把差异收敛到“可修、可验证、可复现”的状态?
---
## 2. 已执行的多维度核查
### 2.1 构建维度(先消除假差异)
- 现象:`mvn -DskipTests package` 在 JDK8 下最初失败,大量 `cn.cloudwalk.client.cwoscomponent.intelligent.*` 类型“找不到符号”。
- 证据:构建日志中同时出现 `intelligent-cwoscomponent-interface` POM invalid 的历史告警;而服务源码大量直接 import 该接口包。
- 判定:这是 **依赖链不稳定** 导致的编译失败,不是 JD-GUI 语义还原问题。
#### 已修正(已落地)
- `pom.xml`(父 `dependencyManagement`)新增:
- `cn.cloudwalk.intelligent:intelligent-cwoscomponent-interface:${intelligent.cwoscomponent.version}`
- `cw-elevator-application-service/pom.xml` 新增显式依赖:
- `cn.cloudwalk.intelligent:intelligent-cwoscomponent-interface`
#### 修正后验证
- 使用 JDK8 重新构建:`mvn -q -DskipTests package` ✅ 成功。
---
### 2.2 依赖工件维度(确认类型是否真实存在)
-`cw_lib/intelligent-cwoscomponent-interface-2.9.2-xinghewan.jar` 执行 `jar tf`
- 已确认关键 class 存在:
- `.../device/result/DeviceResult.class`
- `.../imagestore/result/ImgStorePersonResult.class`
- `.../label/result/LabelDetailResult.class`
- `.../organization/result/OrganizationResult.class`
结论:源码 import 的这些类型在 V1 依赖工件中本就存在;此前编译报错是 classpath/依赖解析问题,而非源码“瞎 import”。
---
### 2.3 字节码维度(V1 jar vs V2 编译产物)
已新增脚本:
- `tools/elevator_api_parity/scripts/bytecode_parity_rootcause.py`
输出:
- `tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.md`
- `tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.json`
对比范围:四模块 `cn/cloudwalk/elevator/**` 主类(不含 `$` 内部类),按三维度比较:
1. 类集合(ONLY_V1 / ONLY_V2
2. API 签名(`javap -p -s` 归一化 hash
3. 方法实现(`javap -c -p` 归一化 hash
#### 统计结果
- `MATCH`: **244**
- `IMPL_DIFF`API 相同、实现不同): **13**
- `API_DIFF`: **48**
- `ONLY_V1`: **0**
- `ONLY_V2`: **8**
---
## 3. 根因归类(回答“是不是 JD-GUI 问题”)
### A. 非 JD-GUI 原因(已确认)
1) **依赖解析问题(已修)**
- 占比:构建阶段致命。
- 性质:工程依赖声明不足 + 私服/本地 POM 解析不稳定引起。
- 影响:会制造大量“源码看似错误”的假象。
2) **源码演进(非还原偏差)**
- 证据:`ONLY_V2=8`,主要是租户访客策略、Session/RemoteIO 配置、ZoneTreeCollectors 等新增类。
- 性质:V2 增量能力,不属于反编译错误。
### B. 可能涉及 JD-GUI/人工改写的区域
1) `IMPL_DIFF=13`
- API 未变,但方法字节码不同。
- 这些类是优先排查“JD-GUI 语句还原偏差 / 后续人工改写”候选。
2) `API_DIFF=48`
- 多数更像结构变化(字段/签名/类型变化),不应默认甩锅 JD-GUI。
- 需要逐类核对“是否是有意修复/增强”。
**结论**
- 不能把当前差异简单归因给 JD-GUI。
- 已确定至少一条主因是 **构建依赖链问题**(且已修复)。
- 剩余差异需按 `IMPL_DIFF``API_DIFF` 分治,不可混为“反编译失败”。
---
## 4. 下一步“彻底修正”执行清单(可直接开干)
1. **锁定基线(防回归)**
- 固化 JDK8 + 当前依赖声明;每次比对前先 `mvn -q -DskipTests package`
2. **优先处理 IMPL_DIFF13 个)**
- 每类做三方对照:`V1 class(javap)` vs `V1 CFR/JD源码` vs `V2源码`
- 目标:判定“JD-GUI 误还原”还是“有意改写”。
3. **再处理 API_DIFF48 个)**
- 按风险分层:Controller/Service > DTO/常量。
- 目标:保留业务必需改动,回退无意漂移。
4. **保留新增能力但可切换**
-`ONLY_V2` 中非必须特性(例如租户策略)增加兼容开关,避免影响 V1 对拍口径。
---
## 5. 本轮落地变更清单
- 新增:`tools/elevator_api_parity/scripts/bytecode_parity_rootcause.py`
- 新增:`tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.md`
- 新增:`tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.json`
- 更新:`pom.xml`(加入 `intelligent-cwoscomponent-interface``dependencyManagement`
- 更新:`cw-elevator-application-service/pom.xml`(显式加入 `intelligent-cwoscomponent-interface`
---
## 6. 结论(一句话)
当前差异并非“全是 JD-GUI 的锅”:已确认有一部分是 **依赖链问题**(已修复)和 **源码演进**;剩余部分已通过字节码分层定位到具体类集,可按清单继续收敛到与 V1 一致(或明确保留差异)。
@@ -0,0 +1,144 @@
#!/usr/bin/env python3
"""从 cw-elevator-application-web 的 *Controller.java 提取 Spring 路由,与 api_catalog.json 对照。"""
from __future__ import annotations
import argparse
import json
import re
from pathlib import Path
from typing import List, Optional, Set, Tuple
def _tool_root() -> Path:
return Path(__file__).resolve().parent.parent
def _java_root(tool_root: Path) -> Optional[Path]:
# tool_root = .../tools/elevator_api_parity → Maven 模块根为其 parent.parent
module_root = tool_root.parent.parent
cand = module_root / "cw-elevator-application-web" / "src" / "main" / "java"
return cand if cand.is_dir() else None
def _strip_path_quotes(s: str) -> str:
s = s.strip()
if s.startswith('"') and s.endswith('"'):
return s[1:-1]
return s
def collect_routes_from_java(java_root: Path) -> List[Tuple[str, str, str]]:
"""返回 (http_method, full_path, source_file) 列表。类上 @RequestMapping 为前缀,方法上 @PostMapping / @RequestMapping 为子路径。"""
out: List[Tuple[str, str, str]] = []
for fp in sorted(java_root.rglob("*Controller.java")):
rel = str(fp.relative_to(java_root))
text = fp.read_text(encoding="utf-8", errors="ignore")
ir = text.find("@RestController")
ic = text.find("public class", ir if ir >= 0 else 0)
head = text[ir:ic] if ir >= 0 and ic > ir else ""
body = text[ic:] if ic >= 0 else text
class_base = ""
mcb = re.search(r'@RequestMapping\s*\(\s*\{?\s*"([^"]+)"', head)
if mcb:
class_base = _strip_path_quotes(mcb.group(1)).rstrip("/")
segs: List[str] = []
segs += re.findall(r'@PostMapping\s*\(\s*\{?\s*"([^"]+)"', body)
segs += re.findall(r'@RequestMapping\s*\(\s*\{?\s*"([^"]+)"', body)
segs += re.findall(r'@RequestMapping\s*\(\s*value\s*=\s*\{\s*"([^"]+)"', body)
for raw in segs:
seg = _strip_path_quotes(raw)
if not seg or seg.startswith("{"):
continue
if class_base and seg.rstrip("/") == class_base.rstrip("/"):
continue
if not seg.startswith("/"):
seg = "/" + seg
full = (class_base + seg).replace("//", "/")
if not full.startswith("/"):
full = "/" + full
out.append(("POST", full, rel))
dedup: dict[str, Tuple[str, str, str]] = {}
for method, path, src in out:
key = f"{method}:{path}"
if key not in dedup:
dedup[key] = (method, path, src)
return list(dedup.values())
EXTRA_NOT_IN_JSON = [
("POST", "/file/imgupload", "FileControllermultipart/form-data,未纳入 JSON 冒烟)"),
]
def main() -> None:
ap = argparse.ArgumentParser()
ap.add_argument("--out", required=True, help="输出 .md 路径")
ap.add_argument("--catalog", help="api_catalog.json")
args = ap.parse_args()
root = _tool_root()
cat_path = Path(args.catalog or (root / "api_catalog.json"))
catalog_paths: Set[str] = set()
if cat_path.is_file():
data = json.loads(cat_path.read_text(encoding="utf-8"))
for ep in data.get("endpoints") or []:
p = ep.get("path") or ""
if p:
catalog_paths.add(p)
java_root = _java_root(root)
routes: List[Tuple[str, str, str]] = []
if java_root:
routes = collect_routes_from_java(java_root)
route_paths = {r[1] for r in routes}
extra_java = sorted(route_paths - catalog_paths)
missing_java = sorted(catalog_paths - route_paths)
lines: List[str] = [
"# 电梯应用后端 HTTP 走查(Controller 扫描 vs api_catalog\n\n",
f"- **扫描目录**: `{java_root or '(未找到 cw-elevator-application-web'}`\n",
f"- **catalog**: `{cat_path.resolve()}`(共 **{len(catalog_paths)}** 条 path\n\n",
"## 1. Java 声明路由(REST Controller\n\n",
"| 方法 | Path | 源文件 |\n",
"| ---- | ---- | ------ |\n",
]
for method, path, src in sorted(routes, key=lambda x: x[1]):
lines.append(f"| {method} | `{path}` | `{src}` |\n")
lines.extend(
[
"\n## 2. 未纳入 api_catalog 的 Controller 路径\n\n",
]
)
if extra_java:
for p in extra_java:
lines.append(f"- `{p}`\n")
else:
lines.append("- (无)\n")
lines.extend(["\n## 3. api_catalog 有而扫描未命中(请核对写法/网关前缀)\n\n"])
if missing_java:
for p in missing_java:
lines.append(f"- `{p}`\n")
else:
lines.append("- (无)\n")
lines.extend(["\n## 4. 其它说明\n\n"])
for _m, _p, note in EXTRA_NOT_IN_JSON:
lines.append(f"- **{_p}**{note}\n")
out = Path(args.out)
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text("".join(lines), encoding="utf-8")
print(out.resolve())
if __name__ == "__main__":
main()
@@ -0,0 +1,223 @@
cn.cloudwalk.elevator:cw-elevator-application-starter:jar:2.0-SNAPSHOT
+- org.springframework.boot:spring-boot-starter-web:jar:1.5.17.RELEASE:compile
| +- org.springframework.boot:spring-boot-starter:jar:1.5.17.RELEASE:compile
| | +- org.springframework.boot:spring-boot:jar:1.5.17.RELEASE:compile
| | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.17.RELEASE:compile
| | +- org.springframework.boot:spring-boot-starter-logging:jar:1.5.17.RELEASE:compile
| | | +- ch.qos.logback:logback-classic:jar:1.1.11:compile
| | | | \- ch.qos.logback:logback-core:jar:1.1.11:compile
| | | +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
| | | +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
| | | \- org.slf4j:log4j-over-slf4j:jar:1.7.25:compile
| | \- org.yaml:snakeyaml:jar:1.17:compile
| +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.5.17.RELEASE:compile
| | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.34:compile
| | | \- org.apache.tomcat:tomcat-annotations-api:jar:8.5.34:compile
| | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.34:compile
| | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.34:compile
| +- org.hibernate:hibernate-validator:jar:5.3.6.Final:compile
| | +- javax.validation:validation-api:jar:1.1.0.Final:compile
| | +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
| | \- com.fasterxml:classmate:jar:1.3.4:compile
| +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.11.2:compile
| | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile
| | \- com.fasterxml.jackson.core:jackson-core:jar:2.8.11:compile
| +- org.springframework:spring-web:jar:4.3.20.RELEASE:compile
| | \- org.springframework:spring-beans:jar:4.3.20.RELEASE:compile
| \- org.springframework:spring-webmvc:jar:4.3.20.RELEASE:compile
| \- org.springframework:spring-expression:jar:4.3.20.RELEASE:compile
+- org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.1:compile
| +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.5.17.RELEASE:compile
| | +- org.apache.tomcat:tomcat-jdbc:jar:8.5.34:compile
| | | \- org.apache.tomcat:tomcat-juli:jar:8.5.34:compile
| | \- org.springframework:spring-jdbc:jar:4.3.20.RELEASE:compile
| +- org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.3.1:compile
| +- org.mybatis:mybatis:jar:3.4.6:compile
| \- org.mybatis:mybatis-spring:jar:1.3.2:compile
+- org.springframework.boot:spring-boot-starter-actuator:jar:1.5.17.RELEASE:compile
| \- org.springframework.boot:spring-boot-actuator:jar:1.5.17.RELEASE:compile
+- org.springframework.boot:spring-boot-starter-cache:jar:1.5.17.RELEASE:compile
| +- org.springframework:spring-context:jar:4.3.20.RELEASE:compile
| \- org.springframework:spring-context-support:jar:4.3.20.RELEASE:compile
+- org.springframework.boot:spring-boot-starter-aop:jar:1.5.17.RELEASE:compile
| +- org.springframework:spring-aop:jar:4.3.20.RELEASE:compile
| \- org.aspectj:aspectjweaver:jar:1.8.13:compile
+- org.springframework.cloud:spring-cloud-starter-openfeign:jar:1.4.7.RELEASE:compile
| +- org.springframework.cloud:spring-cloud-starter:jar:1.3.6.RELEASE:compile
| | +- org.springframework.cloud:spring-cloud-context:jar:1.3.6.RELEASE:compile
| | \- org.springframework.security:spring-security-rsa:jar:1.0.3.RELEASE:compile
| | \- org.bouncycastle:bcpkix-jdk15on:jar:1.55:compile
| | \- org.bouncycastle:bcprov-jdk15on:jar:1.55:compile
| +- org.springframework.cloud:spring-cloud-netflix-core:jar:1.4.7.RELEASE:compile
| +- org.springframework.cloud:spring-cloud-commons:jar:1.3.6.RELEASE:compile
| | +- org.springframework.security:spring-security-crypto:jar:4.2.9.RELEASE:compile
| | \- org.apache.httpcomponents:httpclient:jar:4.5.6:compile
| | +- org.apache.httpcomponents:httpcore:jar:4.4.10:compile
| | \- commons-codec:commons-codec:jar:1.10:compile
| +- io.github.openfeign:feign-core:jar:9.5.0:compile
| | \- org.jvnet:animal-sniffer-annotation:jar:1.0:compile
| +- io.github.openfeign:feign-slf4j:jar:9.5.0:compile
| | \- org.slf4j:slf4j-api:jar:1.7.25:compile
| +- io.github.openfeign:feign-hystrix:jar:9.5.0:compile
| | +- com.netflix.archaius:archaius-core:jar:0.7.4:compile
| | \- com.netflix.hystrix:hystrix-core:jar:1.5.12:compile
| | \- org.hdrhistogram:HdrHistogram:jar:2.1.9:compile
| +- org.springframework.cloud:spring-cloud-starter-netflix-ribbon:jar:1.4.7.RELEASE:compile
| | +- com.netflix.ribbon:ribbon:jar:2.2.5:compile
| | | +- com.netflix.ribbon:ribbon-transport:jar:2.2.5:runtime
| | | | +- io.reactivex:rxnetty-contexts:jar:0.4.9:runtime
| | | | \- io.reactivex:rxnetty-servo:jar:0.4.9:runtime
| | | +- javax.inject:javax.inject:jar:1:runtime
| | | \- io.reactivex:rxnetty:jar:0.4.9:runtime
| | +- com.netflix.ribbon:ribbon-core:jar:2.2.5:compile
| | | \- commons-lang:commons-lang:jar:2.6:compile
| | +- com.netflix.ribbon:ribbon-httpclient:jar:2.2.5:compile
| | | +- commons-collections:commons-collections:jar:3.2.2:runtime
| | | +- com.sun.jersey:jersey-client:jar:1.19.1:runtime
| | | | \- com.sun.jersey:jersey-core:jar:1.19.1:runtime
| | | | \- javax.ws.rs:jsr311-api:jar:1.1.1:runtime
| | | +- com.sun.jersey.contribs:jersey-apache-client4:jar:1.19.1:runtime
| | | +- com.netflix.servo:servo-core:jar:0.10.1:runtime
| | | | \- com.netflix.servo:servo-internal:jar:0.10.1:runtime
| | | \- com.netflix.netflix-commons:netflix-commons-util:jar:0.1.1:runtime
| | +- com.netflix.ribbon:ribbon-loadbalancer:jar:2.2.5:compile
| | | \- com.netflix.netflix-commons:netflix-statistics:jar:0.1.1:runtime
| | \- io.reactivex:rxjava:jar:1.2.0:compile
| \- org.springframework.cloud:spring-cloud-starter-netflix-archaius:jar:1.4.7.RELEASE:compile
| +- commons-configuration:commons-configuration:jar:1.8:compile
| \- com.google.guava:guava:jar:20.0:compile
+- cn.cloudwalk.elevator:cw-elevator-application-web:jar:2.0-SNAPSHOT:compile
| +- cn.cloudwalk.cloud:cloudwalk-common-web:jar:3.7.2-Brussels-SRX:compile
| | +- cn.cloudwalk.cloud:cloudwalk-common-result:jar:3.7.2-Brussels-SRX:compile
| | | +- org.apache.commons:commons-lang3:jar:3.5:compile
| | | \- joda-time:joda-time:jar:2.9.9:compile
| | \- org.jsoup:jsoup:jar:1.11.3:compile
| \- cn.cloudwalk.elevator:cw-elevator-application-service:jar:2.0-SNAPSHOT:compile
| +- cn.cloudwalk.cloud:cloudwalk-common-service:jar:3.7.2-Brussels-SRX:compile
| | +- org.springframework:spring-aspects:jar:4.3.20.RELEASE:compile
| | \- org.springframework.boot:spring-boot-starter-data-redis:jar:1.5.17.RELEASE:compile
| | +- org.springframework.data:spring-data-redis:jar:1.8.16.RELEASE:compile
| | | +- org.springframework.data:spring-data-keyvalue:jar:1.2.16.RELEASE:compile
| | | | \- org.springframework.data:spring-data-commons:jar:1.13.16.RELEASE:compile
| | | \- org.springframework:spring-oxm:jar:4.3.20.RELEASE:compile
| | \- redis.clients:jedis:jar:2.9.0:compile
| | \- org.apache.commons:commons-pool2:jar:2.4.3:compile
| +- org.springframework:spring-tx:jar:4.3.20.RELEASE:compile
| +- cn.cloudwalk.cloud:cloudwalk-common-serial:jar:3.7.2-Brussels-SRX:compile
| | \- com.alibaba:fastjson:jar:1.2.73:compile
| +- cn.cloudwalk:cwos-java-sdk-resource:jar:1.0.0-SNAPSHOT:compile
| | +- cn.cloudwalk.cloud:cwos-component-resource-interface:jar:1.0.0-SNAPSHOT:compile
| | | +- cn.cloudwalk.cloud:cwos-component-resource-data:jar:1.0.0-SNAPSHOT:compile
| | | | \- org.apache.commons:commons-collections4:jar:4.4:compile
| | | \- org.hibernate.validator:hibernate-validator:jar:6.0.22.Final:compile
| | \- cn.cloudwalk:cwos-portal-interface:jar:1.0.0-SNAPSHOT:compile
| | +- cn.cloudwalk:cwos-device-pkg-stub:jar:1.0.0-SNAPSHOT:compile
| | \- org.springframework.boot:spring-boot-starter-validation:jar:1.5.17.RELEASE:compile
| +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.11:compile
| +- cn.cloudwalk.intelligent:cloudwalk-intelligent-component-lock:jar:1.1.1-SNAPSHOT:compile
| | +- org.redisson:redisson:jar:2.15.2:compile
| | | +- io.netty:netty-common:jar:4.1.33.Final:compile
| | | | \- org.jctools:jctools-core:jar:2.1.1:compile
| | | +- io.netty:netty-codec:jar:4.1.33.Final:compile
| | | +- io.netty:netty-buffer:jar:4.1.33.Final:compile
| | | +- io.netty:netty-transport:jar:4.1.33.Final:compile
| | | | \- io.netty:netty-resolver:jar:4.1.33.Final:compile
| | | +- io.netty:netty-resolver-dns:jar:4.1.33.Final:compile
| | | | \- io.netty:netty-codec-dns:jar:4.1.33.Final:compile
| | | +- io.netty:netty-handler:jar:4.1.33.Final:compile
| | | +- javax.cache:cache-api:jar:1.0.0:compile
| | | +- io.projectreactor:reactor-stream:jar:2.0.8.RELEASE:compile
| | | | \- io.projectreactor:reactor-core:jar:2.0.8.RELEASE:compile
| | | +- io.reactivex.rxjava2:rxjava:jar:2.1.13:compile
| | | | \- org.reactivestreams:reactive-streams:jar:1.0.2:compile
| | | +- de.ruedigermoeller:fst:jar:2.56:compile
| | | +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.8.11:compile
| | | +- net.bytebuddy:byte-buddy:jar:1.9.6:compile
| | | | \- net.bytebuddy:byte-buddy-dep:jar:1.9.6:compile
| | | | \- org.ow2.asm:asm-commons:jar:7.0:compile
| | | \- org.jodd:jodd-bean:jar:3.7.1:compile
| | | \- org.jodd:jodd-core:jar:3.7.1:compile
| | \- org.redisson:redisson-spring-boot-starter:jar:2.15.2:compile
| | \- org.redisson:redisson-spring-data-18:jar:2.15.2:compile
| +- cn.cloudwalk.cloud:cloudwalk-common-event:jar:3.7.2-Brussels-SRX:compile
| | +- org.apache.kafka:kafka-clients:jar:2.0.1:compile
| | | +- org.lz4:lz4-java:jar:1.4.1:compile
| | | \- org.xerial.snappy:snappy-java:jar:1.1.7.1:compile
| | \- commons-logging:commons-logging:jar:1.2:compile
| +- cn.cloudwalk.cloud:cwos-sdk-event:jar:1.5.0-SNAPSHOT:compile
| | \- org.reflections:reflections:jar:0.9.12:compile
| | \- org.javassist:javassist:jar:3.21.0-GA:compile
| +- cn.cloudwalk.elevator:cw-elevator-application-data:jar:2.0-SNAPSHOT:compile
| | +- cn.cloudwalk.elevator:cw-elevator-application-common:jar:2.0-SNAPSHOT:compile
| | | +- org.apache.poi:poi:jar:3.15:compile
| | | +- org.apache.poi:poi-ooxml:jar:3.15:compile
| | | | +- org.apache.poi:poi-ooxml-schemas:jar:3.15:compile
| | | | | \- org.apache.xmlbeans:xmlbeans:jar:2.6.0:compile
| | | | | \- stax:stax-api:jar:1.0.1:compile
| | | | \- com.github.virtuald:curvesapi:jar:1.04:compile
| | | +- org.apache.ant:ant:jar:1.9.6:compile
| | | | \- org.apache.ant:ant-launcher:jar:1.9.6:compile
| | | +- net.coobird:thumbnailator:jar:0.4.8:compile
| | | +- com.google.zxing:core:jar:3.3.3:compile
| | | +- net.lingala.zip4j:zip4j:jar:2.6.2:compile
| | | \- org.projectlombok:lombok:jar:1.16.22:compile
| | +- mysql:mysql-connector-java:jar:5.1.47:compile
| | +- com.zaxxer:HikariCP:jar:2.5.1:compile
| | +- com.github.pagehelper:pagehelper:jar:5.1.2:compile
| | | \- com.github.jsqlparser:jsqlparser:jar:1.0:compile
| | +- com.github.pagehelper:pagehelper-spring-boot-autoconfigure:jar:1.2.5:compile
| | \- org.apache.shardingsphere:sharding-jdbc-spring-boot-starter:jar:4.0.0:compile
| | +- org.apache.shardingsphere:sharding-spring-boot-util:jar:4.0.0:compile
| | | \- org.apache.shardingsphere:sharding-core-common:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-spi:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-relation:jar:4.0.0:compile
| | | | \- org.antlr:antlr4-runtime:jar:4.7.2:compile
| | | +- org.apache.shardingsphere:sharding-core-api:jar:4.0.0:compile
| | | \- org.codehaus.groovy:groovy:jar:indy:2.4.5:compile
| | \- org.apache.shardingsphere:sharding-jdbc-core:jar:4.0.0:compile
| | +- org.apache.shardingsphere:sharding-core-entry:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-engine:jar:4.0.0:compile
| | | | \- org.apache.shardingsphere:shardingsphere-sql-parser-spi:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-sql92:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-mysql:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-postgresql:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-oracle:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:shardingsphere-sql-parser-sqlserver:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:sharding-core-route:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:sharding-core-rewrite:jar:4.0.0:compile
| | | | \- org.apache.shardingsphere:shardingsphere-rewrite-engine:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:encrypt-core-rewrite:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:sharding-core-execute:jar:4.0.0:compile
| | | | \- org.apache.shardingsphere:shardingsphere-execute:jar:4.0.0:compile
| | | +- org.apache.shardingsphere:sharding-core-merge:jar:4.0.0:compile
| | | | \- org.apache.shardingsphere:shardingsphere-merge:jar:4.0.0:compile
| | | \- org.apache.shardingsphere:encrypt-core-merge:jar:4.0.0:compile
| | \- org.apache.shardingsphere:sharding-transaction-core:jar:4.0.0:compile
| +- cn.cloudwalk.intelligent:davinci-manager-storage:jar:1.1.7-SNAPSHOT:compile
| | +- cn.cloudwalk.intelligent:davinci-manager-common:jar:1.1.7-SNAPSHOT:compile
| | +- io.github.openfeign.form:feign-form:jar:3.0.3:compile
| | +- io.github.openfeign.form:feign-form-spring:jar:3.0.3:compile
| | +- io.github.openfeign:feign-okhttp:jar:9.5.0:compile
| | | \- com.squareup.okhttp3:okhttp:jar:3.8.1:compile
| | | \- com.squareup.okio:okio:jar:1.13.0:compile
| | \- commons-io:commons-io:jar:2.5:compile
| +- cn.cloudwalk.intelligent:intelligent-cwoscomponent-rest:jar:2.9.2-xinghewan:compile
| +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
| \- com.google.code.findbugs:jsr305:jar:3.0.2:compile
\- org.springframework.boot:spring-boot-starter-test:jar:1.5.17.RELEASE:test
+- org.springframework.boot:spring-boot-test:jar:1.5.17.RELEASE:test
+- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.5.17.RELEASE:test
+- com.jayway.jsonpath:json-path:jar:2.2.0:test
| \- net.minidev:json-smart:jar:2.2.1:test
| \- net.minidev:accessors-smart:jar:1.1:test
| \- org.ow2.asm:asm:jar:5.0.3:compile
+- junit:junit:jar:4.12:test
+- org.assertj:assertj-core:jar:2.6.0:test
+- org.mockito:mockito-core:jar:1.10.19:test
| \- org.objenesis:objenesis:jar:2.1:compile
+- org.hamcrest:hamcrest-core:jar:1.3:test
+- org.hamcrest:hamcrest-library:jar:1.3:test
+- org.skyscreamer:jsonassert:jar:1.4.0:test
| \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
+- org.springframework:spring-core:jar:4.3.20.RELEASE:compile
\- org.springframework:spring-test:jar:4.3.20.RELEASE:test
@@ -0,0 +1,14 @@
{
"generated_at": "2026-04-29T01:06:57.465958Z",
"count": 1,
"items": [
{
"module": "cw-elevator-application-common",
"class_name": "cn.cloudwalk.elevator.util.StringUtils",
"v1_file": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/impl-diff-evidence-20260428/cn_cloudwalk_elevator_util_StringUtils.v1.javap.txt",
"v2_file": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/impl-diff-evidence-20260428/cn_cloudwalk_elevator_util_StringUtils.v2.javap.txt",
"diff_file": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/elevator_api_parity/report/impl-diff-evidence-20260428/cn_cloudwalk_elevator_util_StringUtils.diff.txt",
"diff_lines": 41
}
]
}
@@ -0,0 +1,26 @@
--- cn.cloudwalk.elevator.common.AbstractCloudwalkController.v1
+++ cn.cloudwalk.elevator.common.AbstractCloudwalkController.v2
@@ -72,6 +72,12 @@
Code:
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
+astore_1
+aload_1
+ifnonnull @
+aconst_null
+areturn
+aload_1
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
areturn
public java.lang.String getMessage(java.lang.String, java.lang.String);
@@ -127,6 +133,10 @@
aload _
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
aload_3
+ifnull @
+aload_3
+goto @
+aload_1
areturn
Exception table:
from to target type
@@ -0,0 +1,134 @@
public abstract class cn.cloudwalk.elevator.common.AbstractCloudwalkController {
protected final org.slf4j.Logger LOGGER;
private org.springframework.context.MessageSource messageSource;
private cn.cloudwalk.cloud.context.CloudwalkSessionContextHolder cloudwalkSessionContextHolder;
public cn.cloudwalk.elevator.common.AbstractCloudwalkController();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
aload_0
aload_0
invokevirtual # // Method java/lang/Object.getClass:()Ljava/lang/Class;
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putfield # // Field LOGGER:Lorg/slf4j/Logger;
return
public cn.cloudwalk.cloud.context.CloudwalkCallContext getCloudwalkContext();
Code:
aload_0
getfield # // Field cloudwalkSessionContextHolder:Lcn/cloudwalk/cloud/context/CloudwalkSessionContextHolder;
invokestatic # // Method cn/cloudwalk/cloud/context/CloudwalkCallContextBuilder.buildContext:(Lcn/cloudwalk/cloud/context/CloudwalkSessionContextHolder;)Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
astore_1
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
astore_2
aconst_null
aload_2
if_acmpeq 82
new # // class cn/cloudwalk/cloud/session/extend/DefaultExtendContext
dup
invokespecial # // Method cn/cloudwalk/cloud/session/extend/DefaultExtendContext."<init>":()V
astore_3
new # // class cn/cloudwalk/elevator/context/CloudWalkExtendContextValue
dup
invokespecial # // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue."<init>":()V
astore _
aload_2
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
astore _
aload _
aload _
ldc # // String loginid
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue.setLoginId:(Ljava/lang/String;)V
aload _
aload _
ldc # // String authorization
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue.setAuthorization:(Ljava/lang/String;)V
aload_3
aload _
invokevirtual # // Method cn/cloudwalk/cloud/session/extend/DefaultExtendContext.setValue:(Ljava/lang/Object;)V
aload_1
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.setExt:(Lcn/cloudwalk/cloud/session/extend/ExtendContext;)V
aload_1
areturn
public java.lang.String getToken();
Code:
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
astore_1
aconst_null
aload_1
if_acmpeq 24
aload_1
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
ldc # // String authorization
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
areturn
aconst_null
areturn
protected javax.servlet.http.HttpServletRequest getHttpServletRequest();
Code:
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
areturn
public java.lang.String getMessage(java.lang.String, java.lang.String);
Code:
aload_0
getfield # // Field messageSource:Lorg/springframework/context/MessageSource;
aload_1
aconst_null
aload_2
invokestatic # // Method org/springframework/context/i18n/LocaleContextHolder.getLocale:()Ljava/util/Locale;
invokeinterface # // InterfaceMethod org/springframework/context/MessageSource.getMessage:(Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
areturn
public java.lang.String getMessage(java.lang.String);
Code:
aload_0
aload_1
ldc # // String
invokevirtual # // Method getMessage:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
areturn
protected void makeExcelresponse(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String);
Code:
aload_2
ldc # // String application/vnd.ms-excel;charset=utf-8
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletResponse.setContentType:(Ljava/lang/String;)V
aload_2
ldc # // String Content-Disposition
new # // class java/lang/StringBuilder
dup
invokespecial # // Method java/lang/StringBuilder."<init>":()V
ldc # // String attachment;filename=
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
aload_3
aload_1
invokevirtual # // Method encodeFileName:(Ljava/lang/String;Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
return
protected java.lang.String encodeFileName(java.lang.String, javax.servlet.http.HttpServletRequest);
Code:
aconst_null
astore_3
aload_1
ldc # // String UTF-8
invokestatic # // Method java/net/URLEncoder.encode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore_3
goto @
astore _
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 转换文件名字符类型失败,原因:
aload _
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
aload_3
areturn
Exception table:
from to target type
2 9 12 Class java/lang/Exception
}
@@ -0,0 +1,144 @@
public abstract class cn.cloudwalk.elevator.common.AbstractCloudwalkController {
protected final org.slf4j.Logger LOGGER;
private org.springframework.context.MessageSource messageSource;
private cn.cloudwalk.cloud.context.CloudwalkSessionContextHolder cloudwalkSessionContextHolder;
public cn.cloudwalk.elevator.common.AbstractCloudwalkController();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
aload_0
aload_0
invokevirtual # // Method java/lang/Object.getClass:()Ljava/lang/Class;
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putfield # // Field LOGGER:Lorg/slf4j/Logger;
return
public cn.cloudwalk.cloud.context.CloudwalkCallContext getCloudwalkContext();
Code:
aload_0
getfield # // Field cloudwalkSessionContextHolder:Lcn/cloudwalk/cloud/context/CloudwalkSessionContextHolder;
invokestatic # // Method cn/cloudwalk/cloud/context/CloudwalkCallContextBuilder.buildContext:(Lcn/cloudwalk/cloud/context/CloudwalkSessionContextHolder;)Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
astore_1
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
astore_2
aconst_null
aload_2
if_acmpeq 82
new # // class cn/cloudwalk/cloud/session/extend/DefaultExtendContext
dup
invokespecial # // Method cn/cloudwalk/cloud/session/extend/DefaultExtendContext."<init>":()V
astore_3
new # // class cn/cloudwalk/elevator/context/CloudWalkExtendContextValue
dup
invokespecial # // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue."<init>":()V
astore _
aload_2
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
astore _
aload _
aload _
ldc # // String loginid
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue.setLoginId:(Ljava/lang/String;)V
aload _
aload _
ldc # // String authorization
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue.setAuthorization:(Ljava/lang/String;)V
aload_3
aload _
invokevirtual # // Method cn/cloudwalk/cloud/session/extend/DefaultExtendContext.setValue:(Ljava/lang/Object;)V
aload_1
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.setExt:(Lcn/cloudwalk/cloud/session/extend/ExtendContext;)V
aload_1
areturn
public java.lang.String getToken();
Code:
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
astore_1
aconst_null
aload_1
if_acmpeq 24
aload_1
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
ldc # // String authorization
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
areturn
aconst_null
areturn
protected javax.servlet.http.HttpServletRequest getHttpServletRequest();
Code:
invokestatic # // Method org/springframework/web/context/request/RequestContextHolder.getRequestAttributes:()Lorg/springframework/web/context/request/RequestAttributes;
checkcast # // class org/springframework/web/context/request/ServletRequestAttributes
astore_1
aload_1
ifnonnull @
aconst_null
areturn
aload_1
invokevirtual # // Method org/springframework/web/context/request/ServletRequestAttributes.getRequest:()Ljavax/servlet/http/HttpServletRequest;
areturn
public java.lang.String getMessage(java.lang.String, java.lang.String);
Code:
aload_0
getfield # // Field messageSource:Lorg/springframework/context/MessageSource;
aload_1
aconst_null
aload_2
invokestatic # // Method org/springframework/context/i18n/LocaleContextHolder.getLocale:()Ljava/util/Locale;
invokeinterface # // InterfaceMethod org/springframework/context/MessageSource.getMessage:(Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
areturn
public java.lang.String getMessage(java.lang.String);
Code:
aload_0
aload_1
ldc # // String
invokevirtual # // Method getMessage:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
areturn
protected void makeExcelresponse(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String);
Code:
aload_2
ldc # // String application/vnd.ms-excel;charset=utf-8
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletResponse.setContentType:(Ljava/lang/String;)V
aload_2
ldc # // String Content-Disposition
new # // class java/lang/StringBuilder
dup
invokespecial # // Method java/lang/StringBuilder."<init>":()V
ldc # // String attachment;filename=
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
aload_3
aload_1
invokevirtual # // Method encodeFileName:(Ljava/lang/String;Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokeinterface # // InterfaceMethod javax/servlet/http/HttpServletResponse.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
return
protected java.lang.String encodeFileName(java.lang.String, javax.servlet.http.HttpServletRequest);
Code:
aconst_null
astore_3
aload_1
ldc # // String UTF-8
invokestatic # // Method java/net/URLEncoder.encode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore_3
goto @
astore _
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 转换文件名字符类型失败,原因:
aload _
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
aload_3
ifnull @
aload_3
goto @
aload_1
areturn
Exception table:
from to target type
2 9 12 Class java/lang/Exception
}
@@ -0,0 +1,11 @@
--- cn.cloudwalk.elevator.common.AcsApplicationServiceImpl.v1
+++ cn.cloudwalk.elevator.common.AcsApplicationServiceImpl.v2
@@ -24,7 +24,7 @@
invokeinterface # // InterfaceMethod cn/cloudwalk/client/resource/application/service/ApplicationService.query:(Lcn/cloudwalk/client/resource/application/param/ApplicationQueryParam;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore_3
aload_3
-invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
+invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
@@ -0,0 +1,66 @@
public class cn.cloudwalk.elevator.common.AcsApplicationServiceImpl implements cn.cloudwalk.elevator.common.service.AcsApplicationService {
private static final org.slf4j.Logger logger;
private cn.cloudwalk.client.resource.application.service.ApplicationService applicationService;
public cn.cloudwalk.elevator.common.AcsApplicationServiceImpl();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
return
public java.lang.String getApplicationId(java.lang.String) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
new # // class cn/cloudwalk/client/resource/application/param/ApplicationQueryParam
dup
invokespecial # // Method cn/cloudwalk/client/resource/application/param/ApplicationQueryParam."<init>":()V
astore_2
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/client/resource/application/param/ApplicationQueryParam.setBusinessId:(Ljava/lang/String;)V
aload_2
ldc # // String elevator-app
invokevirtual # // Method cn/cloudwalk/client/resource/application/param/ApplicationQueryParam.setServiceCode:(Ljava/lang/String;)V
aload_0
getfield # // Field applicationService:Lcn/cloudwalk/client/resource/application/service/ApplicationService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/client/resource/application/service/ApplicationService.query:(Lcn/cloudwalk/client/resource/application/param/ApplicationQueryParam;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore_3
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/Collection
invokestatic # // Method org/apache/commons/collections4/CollectionUtils.isNotEmpty:(Ljava/util/Collection;)Z
ifeq @
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
iconst_0
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/client/resource/application/result/ApplicationResult
invokevirtual # // Method cn/cloudwalk/client/resource/application/result/ApplicationResult.getId:()Ljava/lang/String;
areturn
getstatic # // Field logger:Lorg/slf4j/Logger;
ldc # // String 未查到applicationId
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;)V
new # // class cn/cloudwalk/cloud/exception/ServiceException
dup
ldc # // String 76260005
ldc # // String 未查到applicationId
invokespecial # // Method cn/cloudwalk/cloud/exception/ServiceException."<init>":(Ljava/lang/String;Ljava/lang/String;)V
athrow
getstatic # // Field logger:Lorg/slf4j/Logger;
ldc # // String 查询applicationId失败
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;)V
new # // class cn/cloudwalk/cloud/exception/ServiceException
dup
ldc # // String 76260006
ldc # // String 查询applicationId失败
invokespecial # // Method cn/cloudwalk/cloud/exception/ServiceException."<init>":(Ljava/lang/String;Ljava/lang/String;)V
athrow
static {};
Code:
ldc # // class cn/cloudwalk/elevator/common/AcsApplicationServiceImpl
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic # // Field logger:Lorg/slf4j/Logger;
return
}
@@ -0,0 +1,66 @@
public class cn.cloudwalk.elevator.common.AcsApplicationServiceImpl implements cn.cloudwalk.elevator.common.service.AcsApplicationService {
private static final org.slf4j.Logger logger;
private cn.cloudwalk.client.resource.application.service.ApplicationService applicationService;
public cn.cloudwalk.elevator.common.AcsApplicationServiceImpl();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
return
public java.lang.String getApplicationId(java.lang.String) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
new # // class cn/cloudwalk/client/resource/application/param/ApplicationQueryParam
dup
invokespecial # // Method cn/cloudwalk/client/resource/application/param/ApplicationQueryParam."<init>":()V
astore_2
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/client/resource/application/param/ApplicationQueryParam.setBusinessId:(Ljava/lang/String;)V
aload_2
ldc # // String elevator-app
invokevirtual # // Method cn/cloudwalk/client/resource/application/param/ApplicationQueryParam.setServiceCode:(Ljava/lang/String;)V
aload_0
getfield # // Field applicationService:Lcn/cloudwalk/client/resource/application/service/ApplicationService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/client/resource/application/service/ApplicationService.query:(Lcn/cloudwalk/client/resource/application/param/ApplicationQueryParam;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore_3
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/Collection
invokestatic # // Method org/apache/commons/collections4/CollectionUtils.isNotEmpty:(Ljava/util/Collection;)Z
ifeq @
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
iconst_0
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/client/resource/application/result/ApplicationResult
invokevirtual # // Method cn/cloudwalk/client/resource/application/result/ApplicationResult.getId:()Ljava/lang/String;
areturn
getstatic # // Field logger:Lorg/slf4j/Logger;
ldc # // String 未查到applicationId
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;)V
new # // class cn/cloudwalk/cloud/exception/ServiceException
dup
ldc # // String 76260005
ldc # // String 未查到applicationId
invokespecial # // Method cn/cloudwalk/cloud/exception/ServiceException."<init>":(Ljava/lang/String;Ljava/lang/String;)V
athrow
getstatic # // Field logger:Lorg/slf4j/Logger;
ldc # // String 查询applicationId失败
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;)V
new # // class cn/cloudwalk/cloud/exception/ServiceException
dup
ldc # // String 76260006
ldc # // String 查询applicationId失败
invokespecial # // Method cn/cloudwalk/cloud/exception/ServiceException."<init>":(Ljava/lang/String;Ljava/lang/String;)V
athrow
static {};
Code:
ldc # // class cn/cloudwalk/elevator/common/AcsApplicationServiceImpl
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic # // Field logger:Lorg/slf4j/Logger;
return
}
@@ -0,0 +1,14 @@
--- cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor.v1
+++ cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor.v2
@@ -32,6 +32,11 @@
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getQueueCapacity:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setQueueCapacity:(I)V
aload_1
+aload_0
+getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
+invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getKeepAliveSeconds:()I
+invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setKeepAliveSeconds:(I)V
+aload_1
ldc # // String update-floors-pool-
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setThreadNamePrefix:(Ljava/lang/String;)V
aload_1
@@ -0,0 +1,46 @@
public class cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor {
private cn.cloudwalk.elevator.common.UpdateFloorsPoolProperties updateFloorsPoolProperties;
public cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
return
public org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor pictureRevisionTaskExecutor();
Code:
new # // class org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor
dup
invokespecial # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor."<init>":()V
astore_1
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getCorePoolSize:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setCorePoolSize:(I)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.isAllowCoreThreadTimeOut:()Z
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setAllowCoreThreadTimeOut:(Z)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getMaxPoolSize:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setMaxPoolSize:(I)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getQueueCapacity:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setQueueCapacity:(I)V
aload_1
ldc # // String update-floors-pool-
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setThreadNamePrefix:(Ljava/lang/String;)V
aload_1
new # // class java/util/concurrent/ThreadPoolExecutor$AbortPolicy
dup
invokespecial # // Method java/util/concurrent/ThreadPoolExecutor$AbortPolicy."<init>":()V
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setRejectedExecutionHandler:(Ljava/util/concurrent/RejectedExecutionHandler;)V
aload_1
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.initialize:()V
aload_1
areturn
}
@@ -0,0 +1,51 @@
public class cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor {
private cn.cloudwalk.elevator.common.UpdateFloorsPoolProperties updateFloorsPoolProperties;
public cn.cloudwalk.elevator.common.UpdateFloorsTaskExecutor();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
return
public org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor pictureRevisionTaskExecutor();
Code:
new # // class org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor
dup
invokespecial # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor."<init>":()V
astore_1
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getCorePoolSize:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setCorePoolSize:(I)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.isAllowCoreThreadTimeOut:()Z
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setAllowCoreThreadTimeOut:(Z)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getMaxPoolSize:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setMaxPoolSize:(I)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getQueueCapacity:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setQueueCapacity:(I)V
aload_1
aload_0
getfield # // Field updateFloorsPoolProperties:Lcn/cloudwalk/elevator/common/UpdateFloorsPoolProperties;
invokevirtual # // Method cn/cloudwalk/elevator/common/UpdateFloorsPoolProperties.getKeepAliveSeconds:()I
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setKeepAliveSeconds:(I)V
aload_1
ldc # // String update-floors-pool-
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setThreadNamePrefix:(Ljava/lang/String;)V
aload_1
new # // class java/util/concurrent/ThreadPoolExecutor$AbortPolicy
dup
invokespecial # // Method java/util/concurrent/ThreadPoolExecutor$AbortPolicy."<init>":()V
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.setRejectedExecutionHandler:(Ljava/util/concurrent/RejectedExecutionHandler;)V
aload_1
invokevirtual # // Method org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.initialize:()V
aload_1
areturn
}
@@ -0,0 +1,269 @@
--- cn.cloudwalk.elevator.device.impl.AcsElevatorDeviceServiceImpl.v1
+++ cn.cloudwalk.elevator.device.impl.AcsElevatorDeviceServiceImpl.v2
@@ -652,7 +652,7 @@
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
-astore_3
+astore _
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsRestructureQueryParam.getPersonId:()Ljava/lang/String;
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
@@ -712,7 +712,7 @@
getfield # // Field imageRuleRefDao:Lcn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao.listByPersonInfo:(Lcn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto;)Ljava/util/List;
-astore _
+astore_3
goto @
new # // class cn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto
dup
@@ -740,15 +740,15 @@
getfield # // Field imageRuleRefDao:Lcn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao.listByRestructure:(Lcn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto;)Ljava/util/List;
-astore _
+astore_3
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore _
-aload _
-invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
-ifne @
-aload _
+aload_3
+invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
+ifne @
+aload_3
aload _
invokedynamic # // InvokeDynamic #:accept:(Ljava/util/List;)Ljava/util/function/Consumer;
invokeinterface # // InterfaceMethod java/util/List.forEach:(Ljava/util/function/Consumer;)V
@@ -778,13 +778,13 @@
athrow
Exception table:
from to target type
-0 289 290 Class java/lang/Exception
+0 286 287 Class java/lang/Exception
public cn.cloudwalk.cloud.result.CloudwalkResult listFloors(cn.cloudwalk.elevator.device.param.AcsRestructureQueryParam, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
-astore_3
+astore _
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsRestructureQueryParam.getPersonId:()Ljava/lang/String;
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
@@ -844,7 +844,7 @@
getfield # // Field imageRuleRefDao:Lcn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao.listByPersonInfo:(Lcn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto;)Ljava/util/List;
-astore _
+astore_3
goto @
new # // class cn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto
dup
@@ -872,7 +872,7 @@
getfield # // Field imageRuleRefDao:Lcn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao.listByRestructure:(Lcn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto;)Ljava/util/List;
-astore _
+astore_3
new # // class cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceListDto
dup
invokespecial # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceListDto."<init>":()V
@@ -881,10 +881,10 @@
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore _
-aload _
-invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
-ifne @
-aload _
+aload_3
+invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
+ifne @
+aload_3
aload _
invokedynamic # // InvokeDynamic #:accept:(Ljava/util/List;)Ljava/util/function/Consumer;
invokeinterface # // InterfaceMethod java/util/List.forEach:(Ljava/util/function/Consumer;)V
@@ -901,7 +901,7 @@
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsRestructureQueryParam.getZoneId:()Ljava/lang/String;
invokeinterface # // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
ifeq @
-aload_3
+aload _
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload _
@@ -934,7 +934,7 @@
invokedynamic # // InvokeDynamic #:accept:(Ljava/util/List;)Ljava/util/function/Consumer;
invokeinterface # // InterfaceMethod java/util/List.forEach:(Ljava/util/function/Consumer;)V
goto @
-aload_3
+aload _
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload_1
@@ -1062,7 +1062,7 @@
iload _
aload _
invokeinterface # // InterfaceMethod java/util/List.size:()I
-if_icmpge 937
+if_icmpge 936
aload _
invokevirtual # // Method cn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageResultDto.getZoneId:()Ljava/lang/String;
aload _
@@ -1152,12 +1152,12 @@
aload _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/device/result/AcsDeviceRestructureResult.setOfflineDevices:(Ljava/lang/String;)V
-aload_3
+aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto @
-aload_3
+aload _
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
astore_3
@@ -1173,15 +1173,15 @@
athrow
Exception table:
from to target type
-0 305 968 Class java/lang/Exception
-306 389 968 Class java/lang/Exception
-390 967 968 Class java/lang/Exception
+0 303 969 Class java/lang/Exception
+304 388 969 Class java/lang/Exception
+389 968 969 Class java/lang/Exception
public cn.cloudwalk.cloud.result.CloudwalkResult listCondition(cn.cloudwalk.elevator.device.param.AcsRestructureQueryParam, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
-astore_3
+astore _
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsRestructureQueryParam.getBusinessId:()Ljava/lang/String;
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
@@ -1250,7 +1250,7 @@
getfield # // Field imageRuleRefDao:Lcn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao.listByPersonInfo:(Lcn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto;)Ljava/util/List;
-astore _
+astore_3
goto @
new # // class cn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto
dup
@@ -1278,8 +1278,8 @@
getfield # // Field imageRuleRefDao:Lcn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/passrule/dao/ImageRuleRefDao.listByRestructure:(Lcn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageDto;)Ljava/util/List;
-astore _
-aload _
+astore_3
+aload_3
invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
ifne @
new # // class cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceListDto
@@ -1290,7 +1290,7 @@
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore _
-aload _
+aload_3
aload _
invokedynamic # // InvokeDynamic #:accept:(Ljava/util/List;)Ljava/util/function/Consumer;
invokeinterface # // InterfaceMethod java/util/List.forEach:(Ljava/util/function/Consumer;)V
@@ -1309,7 +1309,7 @@
invokestatic # // Method java/util/Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceListDto.setCurrentFloorIds:(Ljava/util/List;)V
goto @
-aload_3
+aload _
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload _
@@ -1379,7 +1379,7 @@
invokeinterface # // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
goto @
-aload _
+aload_3
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore _
aload _
@@ -1425,7 +1425,7 @@
iload _
aload _
invokeinterface # // InterfaceMethod java/util/List.size:()I
-if_icmpge 868
+if_icmpge 865
aload _
invokevirtual # // Method cn/cloudwalk/elevator/passrule/dto/AcsPassRuleImageResultDto.getZoneId:()Ljava/lang/String;
aload _
@@ -1522,7 +1522,7 @@
aload _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/device/result/AcsDeviceRestructureResult.setOfflineDevices:(Ljava/lang/String;)V
-aload_3
+aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
@@ -1532,7 +1532,7 @@
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsRestructureQueryParam.getZoneId:()Ljava/lang/String;
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne @
-aload _
+aload_3
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore _
aload _
@@ -1564,14 +1564,14 @@
aload_0
getfield # // Field floorBuildingId:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/AcsDeviceRestructureResult.setParentId:(Ljava/lang/String;)V
-aload_3
+aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto @
goto @
goto @
-aload _
+aload_3
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore _
aload _
@@ -1597,12 +1597,12 @@
aload_0
getfield # // Field floorBuildingId:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/AcsDeviceRestructureResult.setParentId:(Ljava/lang/String;)V
-aload_3
+aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto @
-aload_3
+aload _
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
astore_3
@@ -1618,8 +1618,8 @@
athrow
Exception table:
from to target type
-0 332 1095 Class java/lang/Exception
-333 1094 1095 Class java/lang/Exception
+0 330 1094 Class java/lang/Exception
+331 1093 1094 Class java/lang/Exception
public cn.cloudwalk.cloud.result.CloudwalkResult listConditionByLabelIds(cn.cloudwalk.elevator.device.param.AcsRestructureQueryParam, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
new # // class java/util/ArrayList
@@ -0,0 +1,20 @@
--- cn.cloudwalk.elevator.export.impl.ElevatorDeviceExportService.v1
+++ cn.cloudwalk.elevator.export.impl.ElevatorDeviceExportService.v2
@@ -56,7 +56,7 @@
aload 8
ldc # // String 禁用
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
-goto 173
+goto 79
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getOnlineStatus:()Ljava/lang/Integer;
iconst_2
@@ -66,7 +66,7 @@
aload 8
ldc # // String 在线
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
-goto 173
+goto 79
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getOnlineStatus:()Ljava/lang/Integer;
iconst_3
@@ -0,0 +1,139 @@
public class cn.cloudwalk.elevator.export.impl.ElevatorDeviceExportService extends cn.cloudwalk.elevator.export.AcsAbstractExportAsyncService<cn.cloudwalk.elevator.device.param.AcsElevatorDeviceQueryParam, cn.cloudwalk.elevator.export.result.ElevatorDeviceRecordExcelResult> {
private cn.cloudwalk.elevator.device.service.AcsElevatorDeviceService elevatorDeviceService;
public cn.cloudwalk.elevator.export.impl.ElevatorDeviceExportService();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/export/AcsAbstractExportAsyncService."<init>":()V
return
protected cn.cloudwalk.cloud.page.CloudwalkPageAble<cn.cloudwalk.elevator.export.result.ElevatorDeviceRecordExcelResult> queryPage(cn.cloudwalk.elevator.device.param.AcsElevatorDeviceQueryParam, cn.cloudwalk.cloud.page.CloudwalkPageInfo, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aload_1
aload_2
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageInfo.getCurrentPage:()I
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setCurrentPage:(I)V
aload_1
aload_2
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageInfo.getPageSize:()I
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setRowsOfPage:(I)V
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_1
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.get:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 4
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq 198
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/page/CloudwalkPageAble
astore 5
aload 5
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble.getDatas:()Ljava/util/Collection;
invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isNotEmpty:(Ljava/util/Collection;)Z
ifeq 198
aload 5
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble.getDatas:()Ljava/util/Collection;
ldc # // class cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copy:(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/List;
astore 6
aload 6
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 7
aload 7
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 176
aload 7
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult
astore 8
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getStatus:()Ljava/lang/Integer;
iconst_1
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic # // Method java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 126
aload 8
ldc # // String 禁用
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
goto 173
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getOnlineStatus:()Ljava/lang/Integer;
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic # // Method java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 151
aload 8
ldc # // String 在线
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
goto 173
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getOnlineStatus:()Ljava/lang/Integer;
iconst_3
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic # // Method java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 173
aload 8
ldc # // String 离线
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
goto 79
new # // class cn/cloudwalk/cloud/page/CloudwalkPageAble
dup
aload 6
aload_2
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/page/CloudwalkPageAble
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble.getTotalRows:()J
invokespecial # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble."<init>":(Ljava/util/Collection;Lcn/cloudwalk/cloud/page/CloudwalkPageInfo;J)V
areturn
new # // class cn/cloudwalk/cloud/exception/ServiceException
dup
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getCode:()Ljava/lang/String;
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getMessage:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/cloud/exception/ServiceException."<init>":(Ljava/lang/String;Ljava/lang/String;)V
athrow
protected cn.cloudwalk.cloud.result.CloudwalkResult<java.lang.String> createLocalFile(cn.cloudwalk.elevator.device.param.AcsElevatorDeviceQueryParam, java.lang.String, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aconst_null
areturn
protected java.lang.String getDefaultFileName();
Code:
new # // class java/lang/StringBuilder
dup
invokespecial # // Method java/lang/StringBuilder."<init>":()V
ldc # // String 派梯设备导出
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
new # // class java/util/Date
dup
invokespecial # // Method java/util/Date."<init>":()V
ldc # // String yyyyMMddHHmmss
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.formatDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
areturn
protected java.lang.String getDefaultFileTitleName();
Code:
ldc # // String 派梯设备
areturn
protected cn.cloudwalk.cloud.result.CloudwalkResult createLocalFile(java.lang.Object, java.lang.String, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
aload_2
aload_3
invokevirtual # // Method createLocalFile:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
protected cn.cloudwalk.cloud.page.CloudwalkPageAble queryPage(java.lang.Object, cn.cloudwalk.cloud.page.CloudwalkPageInfo, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
aload_2
aload_3
invokevirtual # // Method queryPage:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;Lcn/cloudwalk/cloud/page/CloudwalkPageInfo;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/page/CloudwalkPageAble;
areturn
}
@@ -0,0 +1,139 @@
public class cn.cloudwalk.elevator.export.impl.ElevatorDeviceExportService extends cn.cloudwalk.elevator.export.AcsAbstractExportAsyncService<cn.cloudwalk.elevator.device.param.AcsElevatorDeviceQueryParam, cn.cloudwalk.elevator.export.result.ElevatorDeviceRecordExcelResult> {
private cn.cloudwalk.elevator.device.service.AcsElevatorDeviceService elevatorDeviceService;
public cn.cloudwalk.elevator.export.impl.ElevatorDeviceExportService();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/export/AcsAbstractExportAsyncService."<init>":()V
return
protected cn.cloudwalk.cloud.page.CloudwalkPageAble<cn.cloudwalk.elevator.export.result.ElevatorDeviceRecordExcelResult> queryPage(cn.cloudwalk.elevator.device.param.AcsElevatorDeviceQueryParam, cn.cloudwalk.cloud.page.CloudwalkPageInfo, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aload_1
aload_2
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageInfo.getCurrentPage:()I
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setCurrentPage:(I)V
aload_1
aload_2
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageInfo.getPageSize:()I
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setRowsOfPage:(I)V
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_1
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.get:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 4
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq 198
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/page/CloudwalkPageAble
astore 5
aload 5
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble.getDatas:()Ljava/util/Collection;
invokestatic # // Method cn/cloudwalk/elevator/util/CollectionUtils.isNotEmpty:(Ljava/util/Collection;)Z
ifeq 198
aload 5
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble.getDatas:()Ljava/util/Collection;
ldc # // class cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copy:(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/List;
astore 6
aload 6
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 7
aload 7
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 176
aload 7
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult
astore 8
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getStatus:()Ljava/lang/Integer;
iconst_1
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic # // Method java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 126
aload 8
ldc # // String 禁用
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
goto 79
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getOnlineStatus:()Ljava/lang/Integer;
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic # // Method java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 151
aload 8
ldc # // String 在线
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
goto 79
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.getOnlineStatus:()Ljava/lang/Integer;
iconst_3
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic # // Method java/util/Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 173
aload 8
ldc # // String 离线
invokevirtual # // Method cn/cloudwalk/elevator/export/result/ElevatorDeviceRecordExcelResult.setDeviceOnlineStatus:(Ljava/lang/String;)V
goto 79
new # // class cn/cloudwalk/cloud/page/CloudwalkPageAble
dup
aload 6
aload_2
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/page/CloudwalkPageAble
invokevirtual # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble.getTotalRows:()J
invokespecial # // Method cn/cloudwalk/cloud/page/CloudwalkPageAble."<init>":(Ljava/util/Collection;Lcn/cloudwalk/cloud/page/CloudwalkPageInfo;J)V
areturn
new # // class cn/cloudwalk/cloud/exception/ServiceException
dup
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getCode:()Ljava/lang/String;
aload 4
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getMessage:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/cloud/exception/ServiceException."<init>":(Ljava/lang/String;Ljava/lang/String;)V
athrow
protected cn.cloudwalk.cloud.result.CloudwalkResult<java.lang.String> createLocalFile(cn.cloudwalk.elevator.device.param.AcsElevatorDeviceQueryParam, java.lang.String, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aconst_null
areturn
protected java.lang.String getDefaultFileName();
Code:
new # // class java/lang/StringBuilder
dup
invokespecial # // Method java/lang/StringBuilder."<init>":()V
ldc # // String 派梯设备导出
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
new # // class java/util/Date
dup
invokespecial # // Method java/util/Date."<init>":()V
ldc # // String yyyyMMddHHmmss
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.formatDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
areturn
protected java.lang.String getDefaultFileTitleName();
Code:
ldc # // String 派梯设备
areturn
protected cn.cloudwalk.cloud.result.CloudwalkResult createLocalFile(java.lang.Object, java.lang.String, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
aload_2
aload_3
invokevirtual # // Method createLocalFile:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
protected cn.cloudwalk.cloud.page.CloudwalkPageAble queryPage(java.lang.Object, cn.cloudwalk.cloud.page.CloudwalkPageInfo, cn.cloudwalk.cloud.context.CloudwalkCallContext) throws cn.cloudwalk.cloud.exception.ServiceException;
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
aload_2
aload_3
invokevirtual # // Method queryPage:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;Lcn/cloudwalk/cloud/page/CloudwalkPageInfo;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/page/CloudwalkPageAble;
areturn
}
@@ -0,0 +1,330 @@
--- cn.cloudwalk.elevator.export.utils.ExcelUtil.v1
+++ cn.cloudwalk.elevator.export.utils.ExcelUtil.v2
@@ -73,14 +73,13 @@
istore _
iload _
iload _
-if_icmpgt 346
+if_icmpgt 345
aload _
iload _
invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Sheet.getRow:(I)Lorg/apache/poi/ss/usermodel/Row;
astore _
aload _
-ifnonnull @
-goto @
+ifnull @
aload _
invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Row.cellIterator:()Ljava/util/Iterator;
astore _
@@ -107,8 +106,8 @@
ifne @
goto @
aload _
-iconst_1
-invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Cell.setCellType:(I)V
+getstatic # // Field org/apache/poi/ss/usermodel/CellType.STRING:Lorg/apache/poi/ss/usermodel/CellType;
+invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Cell.setCellType:(Lorg/apache/poi/ss/usermodel/CellType;)V
aload _
invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Cell.getStringCellValue:()Ljava/lang/String;
astore _
@@ -200,12 +199,12 @@
areturn
Exception table:
from to target type
-356 363 366 Class java/lang/Throwable
-18 346 388 Class java/lang/Throwable
-18 346 397 any
-409 416 419 Class java/lang/Throwable
-388 399 397 any
-9 441 444 Class java/lang/Exception
+355 362 365 Class java/lang/Throwable
+18 345 387 Class java/lang/Throwable
+18 345 396 any
+408 415 418 Class java/lang/Throwable
+387 398 396 any
+9 440 443 Class java/lang/Exception
private static <T> void setValue(T, java.lang.String, java.lang.reflect.Field, java.lang.Class<?>) throws java.lang.IllegalAccessException;
Code:
ldc # // class java/lang/String
@@ -574,7 +573,7 @@
istore _
iload _
iload _
-if_icmpge 103
+if_icmpge 100
aload _
iload _
aaload
@@ -588,8 +587,7 @@
ifnull @
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/export/ExcelAttribute.isExport:()Z
-ifne @
-goto @
+ifeq @
aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
@@ -614,7 +612,7 @@
istore _
iload _
iload _
-if_icmpgt 227
+if_icmpgt 224
aload _
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFWorkbook.createSheet:()Lorg/apache/poi/hssf/usermodel/HSSFSheet;
astore _
@@ -711,13 +709,13 @@
athrow
Exception table:
from to target type
-259 264 267 Class java/lang/Throwable
-12 249 287 Class java/lang/Throwable
-12 249 296 any
-308 313 316 Class java/lang/Throwable
-287 298 296 any
-0 284 336 Class java/lang/Exception
-287 336 336 Class java/lang/Exception
+256 261 264 Class java/lang/Throwable
+12 246 284 Class java/lang/Throwable
+12 246 293 any
+305 310 313 Class java/lang/Throwable
+284 295 293 any
+0 281 333 Class java/lang/Exception
+284 333 333 Class java/lang/Exception
public static <T> boolean getListToExcel(java.util.List<T>, java.lang.String, java.io.OutputStream, java.lang.Class<T>, java.lang.Integer, cn.cloudwalk.elevator.export.ExcelCallback) throws java.lang.Exception;
Code:
new # // class org/apache/poi/hssf/usermodel/HSSFWorkbook
@@ -744,7 +742,7 @@
istore _
iload _
iload _
-if_icmpge 103
+if_icmpge 100
aload _
iload _
aaload
@@ -758,8 +756,7 @@
ifnull @
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/export/ExcelAttribute.isExport:()Z
-ifne @
-goto @
+ifeq @
aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
@@ -784,7 +781,7 @@
istore _
iload _
iload _
-if_icmpgt 254
+if_icmpgt 251
aload _
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFWorkbook.createSheet:()Lorg/apache/poi/hssf/usermodel/HSSFSheet;
astore _
@@ -828,7 +825,7 @@
invokestatic # // Method createRowContent:(Lorg/apache/poi/hssf/usermodel/HSSFSheet;Ljava/util/List;Lorg/apache/poi/hssf/usermodel/HSSFWorkbook;Ljava/util/List;III)V
aconst_null
aload _
-if_acmpeq 248
+if_acmpeq 245
aload _
aload _
aload _
@@ -892,13 +889,13 @@
athrow
Exception table:
from to target type
-286 291 294 Class java/lang/Throwable
-12 276 314 Class java/lang/Throwable
-12 276 323 any
-335 340 343 Class java/lang/Throwable
-314 325 323 any
-0 311 363 Class java/lang/Exception
-314 363 363 Class java/lang/Exception
+283 288 291 Class java/lang/Throwable
+12 273 311 Class java/lang/Throwable
+12 273 320 any
+332 337 340 Class java/lang/Throwable
+311 322 320 any
+0 308 360 Class java/lang/Exception
+311 360 360 Class java/lang/Exception
private static <T> void createRowContent(org.apache.poi.hssf.usermodel.HSSFSheet, java.util.List<java.lang.reflect.Field>, org.apache.poi.hssf.usermodel.HSSFWorkbook, java.util.List<T>, int, int, int) throws java.lang.Exception;
Code:
aconst_null
@@ -911,7 +908,7 @@
istore _
iload _
iload _
-if_icmpge 416
+if_icmpge 410
aload _
iload _
iload _
@@ -929,7 +926,7 @@
iload _
aload _
invokeinterface # // InterfaceMethod java/util/List.size:()I
-if_icmpge 410
+if_icmpge 404
aload _
iload _
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
@@ -955,8 +952,7 @@
istore _
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/export/ExcelAttribute.isExport:()Z
-ifne @
-goto @
+ifeq @
aload _
iload _
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFRow.createCell:(I)Lorg/apache/poi/hssf/usermodel/HSSFCell;
@@ -967,8 +963,7 @@
aload _
aload _
invokevirtual # // Method java/lang/reflect/Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
-ifnonnull @
-goto @
+ifnull @
aconst_null
astore _
aload _
@@ -1071,14 +1066,14 @@
goto @
aload _
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFCell.setCellValue:(Ljava/lang/String;)V
-iinc 17, 1
-goto @
-iinc 15, 1
+iinc 13, 1
+goto @
+iinc 10, 1
goto @
return
Exception table:
from to target type
-247 290 293 Class java/lang/Exception
+241 284 287 Class java/lang/Exception
public static void createRowHeard(org.apache.poi.hssf.usermodel.HSSFSheet, java.util.List<java.lang.reflect.Field>, org.apache.poi.hssf.usermodel.HSSFWorkbook, int);
Code:
aload _
@@ -1090,7 +1085,7 @@
iload _
aload _
invokeinterface # // InterfaceMethod java/util/List.size:()I
-if_icmpge 185
+if_icmpge 187
iload _
istore _
aload _
@@ -1149,13 +1144,13 @@
d2i
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFSheet.setColumnWidth:(II)V
aload _
-iconst_1
-invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFCell.setCellType:(I)V
+getstatic # // Field org/apache/poi/ss/usermodel/CellType.STRING:Lorg/apache/poi/ss/usermodel/CellType;
+invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFCell.setCellType:(Lorg/apache/poi/ss/usermodel/CellType;)V
aload _
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/export/ExcelAttribute.name:()Ljava/lang/String;
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFCell.setCellValue:(Ljava/lang/String;)V
-iinc 10, 1
+iinc 5, 1
goto @
return
private static org.apache.poi.hssf.usermodel.HSSFCellStyle createCellStyle(org.apache.poi.hssf.usermodel.HSSFWorkbook, java.lang.String);
@@ -1170,14 +1165,15 @@
ldc # // String Arail narrow
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont.setFontName:(Ljava/lang/String;)V
aload _
-sipush 700
-invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont.setBoldweight:(S)V
+iconst_1
+invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont.setBold:(Z)V
ldc # // String 1
aload _
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq @
aload _
-sipush 32767
+getstatic # // Field org/apache/poi/ss/usermodel/IndexedColors.RED:Lorg/apache/poi/ss/usermodel/IndexedColors;
+invokevirtual # // Method org/apache/poi/ss/usermodel/IndexedColors.getIndex:()S
invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont.setColor:(S)V
aload _
aload _
@@ -1329,7 +1325,7 @@
dup
istore _
iconst_m1
-if_icmpeq 95
+if_icmpeq 97
aload _
aload _
iconst_0
@@ -1420,12 +1416,12 @@
athrow
Exception table:
from to target type
-109 113 116 Class java/io/IOException
-155 159 162 Class java/io/IOException
-13 105 200 any
-206 210 213 Class java/io/IOException
-252 256 259 Class java/io/IOException
-200 202 200 any
+112 116 119 Class java/io/IOException
+158 162 165 Class java/io/IOException
+13 108 203 any
+209 213 216 Class java/io/IOException
+255 259 262 Class java/io/IOException
+203 205 203 any
public static void setExcelAttribute(cn.cloudwalk.elevator.export.ExcelAttribute, java.lang.String, java.lang.Object, boolean);
Code:
aload _
@@ -1514,7 +1510,7 @@
istore _
iload _
iload _
-if_icmpge 101
+if_icmpge 98
aload _
iload _
aaload
@@ -1528,8 +1524,7 @@
ifnull @
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/export/ExcelAttribute.isExport:()Z
-ifne @
-goto @
+ifeq @
aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
@@ -1613,15 +1608,15 @@
athrow
Exception table:
from to target type
-162 167 170 Class java/lang/Throwable
-13 152 194 Class java/lang/Throwable
-13 152 203 any
-215 220 223 Class java/lang/Throwable
-194 205 203 any
-0 187 243 Class java/io/IOException
-194 243 243 Class java/io/IOException
-0 187 257 any
-194 259 257 any
+159 164 167 Class java/lang/Throwable
+13 149 191 Class java/lang/Throwable
+13 149 200 any
+212 217 220 Class java/lang/Throwable
+191 202 200 any
+0 184 240 Class java/io/IOException
+191 240 240 Class java/io/IOException
+0 184 254 any
+191 256 254 any
static {};
Code:
ldc # // class cn/cloudwalk/elevator/export/utils/ExcelUtil
@@ -0,0 +1,45 @@
--- cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler.v1
+++ cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler.v2
@@ -23,7 +23,7 @@
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getDeviceId:()Ljava/lang/String;
aload_2
-invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler.queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
+invokevirtual # // Method queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore_3
aload_0
aload_1
@@ -62,8 +62,7 @@
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.getIdentifyType:()I
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.equals:(Ljava/lang/Object;)Z
-ifeq @
-goto @
+ifne @
aload _
ifnull @
aload_0
@@ -81,7 +80,7 @@
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.getRecordResult:()Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.intValue:()I
iconst_1
-if_icmpne 209
+if_icmpne 206
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
@@ -116,10 +115,10 @@
return
Exception table:
from to target type
-14 209 215 Class java/lang/Exception
-14 209 233 any
-215 227 233 any
-233 235 233 any
+14 206 212 Class java/lang/Exception
+14 206 230 any
+212 224 230 any
+230 232 230 any
private void cleanCache(cn.cloudwalk.cloud.context.CloudwalkCallContext, cn.cloudwalk.client.cwoscomponent.intelligent.device.result.DeviceResult, java.lang.String, java.lang.String);
Code:
aload_2
@@ -0,0 +1,196 @@
public class cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler extends cn.cloudwalk.elevator.handler.AbstractEventHandler implements cn.cloudwalk.event.handler.EventHandler<cn.cloudwalk.cwos.client.event.event.OpenDoorRecordEvent> {
private static final org.slf4j.Logger LOGGER;
private cn.cloudwalk.elevator.record.service.AcsElevatorRecordService acsElevatorRecordService;
private org.springframework.data.redis.core.RedisTemplate<java.lang.String, java.lang.Object> redisTemplate;
public cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler."<init>":()V
return
public void onEvent(cn.cloudwalk.cwos.client.event.event.OpenDoorRecordEvent);
Code:
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 收到openDoorRecordEvent消息:{}
aload_1
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getBusinessId:()Ljava/lang/String;
invokevirtual # // Method getCloudwalkContext:(Ljava/lang/String;)Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
astore_2
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getDeviceId:()Ljava/lang/String;
aload_2
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler.queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore_3
aload_0
aload_1
invokespecial # // Method getParam:(Lcn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent;)Lcn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam;
astore _
aload _
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
aconst_null
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getReserveInfo:()Ljava/lang/String;
invokestatic # // Method org/apache/commons/lang3/StringUtils.isNotBlank:(Ljava/lang/CharSequence;)Z
ifeq @
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getReserveInfo:()Ljava/lang/String;
invokestatic # // Method com/alibaba/fastjson/JSON.parseObject:(Ljava/lang/String;)Lcom/alibaba/fastjson/JSONObject;
astore _
aload _
invokevirtual # // Method com/alibaba/fastjson/JSONObject.isEmpty:()Z
ifne @
aload _
ldc # // String srcFloor
invokevirtual # // Method com/alibaba/fastjson/JSONObject.containsKey:(Ljava/lang/Object;)Z
ifeq @
aload _
ldc # // class cn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO
invokevirtual # // Method com/alibaba/fastjson/JSONObject.toJavaObject:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO
astore _
aload_3
ifnull @
getstatic # // Field cn/cloudwalk/elevator/em/AcsDeviceIdentifyTypeEnum.BACKEND_REG:Lcn/cloudwalk/elevator/em/AcsDeviceIdentifyTypeEnum;
invokevirtual # // Method cn/cloudwalk/elevator/em/AcsDeviceIdentifyTypeEnum.getCode:()Ljava/lang/Integer;
aload_3
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.getIdentifyType:()I
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.equals:(Ljava/lang/Object;)Z
ifeq @
goto @
aload _
ifnull @
aload_0
aload _
aload _
invokespecial # // Method getElevatorParam:(Lcn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam;Lcn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO;)Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;
astore _
aload_0
getfield # // Field acsElevatorRecordService:Lcn/cloudwalk/elevator/record/service/AcsElevatorRecordService;
aload _
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsElevatorRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.getRecordResult:()Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.intValue:()I
iconst_1
if_icmpne 209
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
ldc # // String 1
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO.getSrcFloor:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq @
aload_0
new # // class java/util/Date
dup
invokespecial # // Method java/util/Date."<init>":()V
ldc # // String yyyy-MM-dd
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.parseDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getBusinessId:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getOpenDoorCountKey:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method statisticsAddCache:(Ljava/lang/String;)V
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore_2
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 消费开门记录失败,原因:
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore _
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
aload _
athrow
return
Exception table:
from to target type
14 209 215 Class java/lang/Exception
14 209 233 any
215 227 233 any
233 235 233 any
private void cleanCache(cn.cloudwalk.cloud.context.CloudwalkCallContext, cn.cloudwalk.client.cwoscomponent.intelligent.device.result.DeviceResult, java.lang.String, java.lang.String);
Code:
aload_2
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.getDeviceCode:()Ljava/lang/String;
aload_1
invokevirtual # // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getCompany:()Lcn/cloudwalk/cloud/session/company/CompanyContext;
invokevirtual # // Method cn/cloudwalk/cloud/session/company/CompanyContext.getCompanyId:()Ljava/lang/String;
aload _
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getBackendRegLogIdKey:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getCompany:()Lcn/cloudwalk/cloud/session/company/CompanyContext;
invokevirtual # // Method cn/cloudwalk/cloud/session/company/CompanyContext.getCompanyId:()Ljava/lang/String;
aload_3
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getBackendRegExpireKey:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore _
aload_0
getfield # // Field redisTemplate:Lorg/springframework/data/redis/core/RedisTemplate;
aload _
invokevirtual # // Method org/springframework/data/redis/core/RedisTemplate.delete:(Ljava/lang/Object;)V
aload_0
getfield # // Field redisTemplate:Lorg/springframework/data/redis/core/RedisTemplate;
aload _
invokevirtual # // Method org/springframework/data/redis/core/RedisTemplate.delete:(Ljava/lang/Object;)V
return
private cn.cloudwalk.elevator.record.param.AcsOpenDoorRecordAddParam getParam(cn.cloudwalk.cwos.client.event.event.OpenDoorRecordEvent);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam
astore_2
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getRecordResult:()Ljava/lang/String;
invokestatic # // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setRecordResult:(Ljava/lang/Integer;)V
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getDeviceId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setDeviceCode:(Ljava/lang/String;)V
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getOpenDoorType:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setOpenDoorType:(Ljava/lang/String;)V
aload_2
areturn
private cn.cloudwalk.elevator.record.param.AcsElevatorRecordAddParam getElevatorParam(cn.cloudwalk.elevator.record.param.AcsOpenDoorRecordAddParam, cn.cloudwalk.elevator.record.dto.AcsElevatorRecordExtraDTO);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
astore_3
aload_2
aload_3
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
areturn
public void onEvent(cn.cloudwalk.cwos.client.event.event.BaseEvent);
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent
invokevirtual # // Method onEvent:(Lcn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent;)V
return
static {};
Code:
ldc # // class cn/cloudwalk/elevator/handler/OpenDoorRecordEventHandler
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic # // Field LOGGER:Lorg/slf4j/Logger;
return
}
@@ -0,0 +1,195 @@
public class cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler extends cn.cloudwalk.elevator.handler.AbstractEventHandler implements cn.cloudwalk.event.handler.EventHandler<cn.cloudwalk.cwos.client.event.event.OpenDoorRecordEvent> {
private static final org.slf4j.Logger LOGGER;
private cn.cloudwalk.elevator.record.service.AcsElevatorRecordService acsElevatorRecordService;
private org.springframework.data.redis.core.RedisTemplate<java.lang.String, java.lang.Object> redisTemplate;
public cn.cloudwalk.elevator.handler.OpenDoorRecordEventHandler();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler."<init>":()V
return
public void onEvent(cn.cloudwalk.cwos.client.event.event.OpenDoorRecordEvent);
Code:
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 收到openDoorRecordEvent消息:{}
aload_1
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getBusinessId:()Ljava/lang/String;
invokevirtual # // Method getCloudwalkContext:(Ljava/lang/String;)Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
astore_2
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getDeviceId:()Ljava/lang/String;
aload_2
invokevirtual # // Method queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore_3
aload_0
aload_1
invokespecial # // Method getParam:(Lcn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent;)Lcn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam;
astore _
aload _
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
aconst_null
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getReserveInfo:()Ljava/lang/String;
invokestatic # // Method org/apache/commons/lang3/StringUtils.isNotBlank:(Ljava/lang/CharSequence;)Z
ifeq @
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getReserveInfo:()Ljava/lang/String;
invokestatic # // Method com/alibaba/fastjson/JSON.parseObject:(Ljava/lang/String;)Lcom/alibaba/fastjson/JSONObject;
astore _
aload _
invokevirtual # // Method com/alibaba/fastjson/JSONObject.isEmpty:()Z
ifne @
aload _
ldc # // String srcFloor
invokevirtual # // Method com/alibaba/fastjson/JSONObject.containsKey:(Ljava/lang/Object;)Z
ifeq @
aload _
ldc # // class cn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO
invokevirtual # // Method com/alibaba/fastjson/JSONObject.toJavaObject:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO
astore _
aload_3
ifnull @
getstatic # // Field cn/cloudwalk/elevator/em/AcsDeviceIdentifyTypeEnum.BACKEND_REG:Lcn/cloudwalk/elevator/em/AcsDeviceIdentifyTypeEnum;
invokevirtual # // Method cn/cloudwalk/elevator/em/AcsDeviceIdentifyTypeEnum.getCode:()Ljava/lang/Integer;
aload_3
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.getIdentifyType:()I
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.equals:(Ljava/lang/Object;)Z
ifne @
aload _
ifnull @
aload_0
aload _
aload _
invokespecial # // Method getElevatorParam:(Lcn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam;Lcn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO;)Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;
astore _
aload_0
getfield # // Field acsElevatorRecordService:Lcn/cloudwalk/elevator/record/service/AcsElevatorRecordService;
aload _
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsElevatorRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.getRecordResult:()Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.intValue:()I
iconst_1
if_icmpne 206
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
ldc # // String 1
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/AcsElevatorRecordExtraDTO.getSrcFloor:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq @
aload_0
new # // class java/util/Date
dup
invokespecial # // Method java/util/Date."<init>":()V
ldc # // String yyyy-MM-dd
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.parseDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getBusinessId:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getOpenDoorCountKey:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method statisticsAddCache:(Ljava/lang/String;)V
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore_2
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 消费开门记录失败,原因:
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore _
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
aload _
athrow
return
Exception table:
from to target type
14 206 212 Class java/lang/Exception
14 206 230 any
212 224 230 any
230 232 230 any
private void cleanCache(cn.cloudwalk.cloud.context.CloudwalkCallContext, cn.cloudwalk.client.cwoscomponent.intelligent.device.result.DeviceResult, java.lang.String, java.lang.String);
Code:
aload_2
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.getDeviceCode:()Ljava/lang/String;
aload_1
invokevirtual # // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getCompany:()Lcn/cloudwalk/cloud/session/company/CompanyContext;
invokevirtual # // Method cn/cloudwalk/cloud/session/company/CompanyContext.getCompanyId:()Ljava/lang/String;
aload _
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getBackendRegLogIdKey:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getCompany:()Lcn/cloudwalk/cloud/session/company/CompanyContext;
invokevirtual # // Method cn/cloudwalk/cloud/session/company/CompanyContext.getCompanyId:()Ljava/lang/String;
aload_3
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getBackendRegExpireKey:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore _
aload_0
getfield # // Field redisTemplate:Lorg/springframework/data/redis/core/RedisTemplate;
aload _
invokevirtual # // Method org/springframework/data/redis/core/RedisTemplate.delete:(Ljava/lang/Object;)V
aload_0
getfield # // Field redisTemplate:Lorg/springframework/data/redis/core/RedisTemplate;
aload _
invokevirtual # // Method org/springframework/data/redis/core/RedisTemplate.delete:(Ljava/lang/Object;)V
return
private cn.cloudwalk.elevator.record.param.AcsOpenDoorRecordAddParam getParam(cn.cloudwalk.cwos.client.event.event.OpenDoorRecordEvent);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam
astore_2
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getRecordResult:()Ljava/lang/String;
invokestatic # // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setRecordResult:(Ljava/lang/Integer;)V
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getDeviceId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setDeviceCode:(Ljava/lang/String;)V
aload_2
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent.getOpenDoorType:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsOpenDoorRecordAddParam.setOpenDoorType:(Ljava/lang/String;)V
aload_2
areturn
private cn.cloudwalk.elevator.record.param.AcsElevatorRecordAddParam getElevatorParam(cn.cloudwalk.elevator.record.param.AcsOpenDoorRecordAddParam, cn.cloudwalk.elevator.record.dto.AcsElevatorRecordExtraDTO);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
astore_3
aload_2
aload_3
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
areturn
public void onEvent(cn.cloudwalk.cwos.client.event.event.BaseEvent);
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent
invokevirtual # // Method onEvent:(Lcn/cloudwalk/cwos/client/event/event/OpenDoorRecordEvent;)V
return
static {};
Code:
ldc # // class cn/cloudwalk/elevator/handler/OpenDoorRecordEventHandler
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic # // Field LOGGER:Lorg/slf4j/Logger;
return
}
@@ -0,0 +1,18 @@
--- cn.cloudwalk.elevator.handler.PersonRecordEventHandler.v1
+++ cn.cloudwalk.elevator.handler.PersonRecordEventHandler.v2
@@ -22,13 +22,13 @@
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getDeviceId:()Ljava/lang/String;
aload_2
-invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler.queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
+invokevirtual # // Method queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore_3
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getSubDeviceId:()Ljava/lang/String;
aload_2
-invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler.queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
+invokevirtual # // Method queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getFaces:()Ljava/util/List;
@@ -0,0 +1,198 @@
public class cn.cloudwalk.elevator.handler.PersonRecordEventHandler extends cn.cloudwalk.elevator.handler.AbstractEventHandler implements cn.cloudwalk.event.handler.EventHandler<cn.cloudwalk.cwos.client.event.event.PersonRecordUploadEvent> {
private static final org.slf4j.Logger LOGGER;
private cn.cloudwalk.elevator.record.service.AcsRecogRecordService acsRecogRecordService;
public cn.cloudwalk.elevator.handler.PersonRecordEventHandler();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler."<init>":()V
return
public void onEvent(cn.cloudwalk.cwos.client.event.event.PersonRecordUploadEvent);
Code:
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 收到personRecordUploadEvent消息:{}
aload_1
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getBusinessId:()Ljava/lang/String;
invokevirtual # // Method getCloudwalkContext:(Ljava/lang/String;)Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
astore_2
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getDeviceId:()Ljava/lang/String;
aload_2
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler.queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore_3
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getSubDeviceId:()Ljava/lang/String;
aload_2
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler.queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getFaces:()Ljava/util/List;
invokeinterface # // InterfaceMethod java/util/List.stream:()Ljava/util/stream/Stream;
invokedynamic # // InvokeDynamic #:apply:()Ljava/util/function/Function;
invokestatic # // Method java/util/stream/Collectors.groupingBy:(Ljava/util/function/Function;)Ljava/util/stream/Collector;
invokeinterface # // InterfaceMethod java/util/stream/Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
checkcast # // class java/util/Map
astore _
aload _
invokeinterface # // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
invokeinterface # // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
astore _
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq @
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class java/lang/String
astore _
aload _
aload _
invokeinterface # // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast # // class java/util/List
iconst_0
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cwos/client/event/event/mode/Face
astore _
aload_0
aload_1
aload _
invokespecial # // Method getParam:(Lcn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent;Lcn/cloudwalk/cwos/client/event/event/mode/Face;)Lcn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam;
astore _
aload _
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
aload _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setSubDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
aload_0
getfield # // Field acsRecogRecordService:Lcn/cloudwalk/elevator/record/service/AcsRecogRecordService;
aload _
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsRecogRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
pop
aload_0
new # // class java/util/Date
dup
invokespecial # // Method java/util/Date."<init>":()V
ldc # // String yyyy-MM-dd
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.parseDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getBusinessId:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getRecogCountKey:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method statisticsAddCache:(Ljava/lang/String;)V
goto @
astore _
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 保存人员识别记录失败,faceId:{},原因:
aload _
aload _
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
goto @
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore_2
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 消费人员识别记录失败,原因:
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore _
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
aload _
athrow
return
Exception table:
from to target type
107 188 191 Class java/lang/Exception
14 210 216 Class java/lang/Exception
14 210 234 any
216 228 234 any
234 236 234 any
private cn.cloudwalk.elevator.record.param.AcsRecogRecordAddParam getParam(cn.cloudwalk.cwos.client.event.event.PersonRecordUploadEvent, cn.cloudwalk.cwos.client.event.event.mode.Face);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam
astore_3
aload_2
aload_3
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getPanoramaData:()Lcn/cloudwalk/cwos/client/event/event/mode/Panorama;
ifnull @
aload_3
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getPanoramaData:()Lcn/cloudwalk/cwos/client/event/event/mode/Panorama;
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Panorama.getPanoramaImagePath:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setPanoramaImagePath:(Ljava/lang/String;)V
aload_3
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getDeviceId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setDeviceCode:(Ljava/lang/String;)V
aload_3
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getThreshold:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setThreshold:(Ljava/math/BigDecimal;)V
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setScore:(Ljava/math/BigDecimal;)V
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getQualityScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setQualityScore:(Ljava/math/BigDecimal;)V
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getMaskScore:()Ljava/lang/Float;
ifnull @
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getMaskScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setMaskScore:(Ljava/math/BigDecimal;)V
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getTempScore:()Ljava/lang/Float;
ifnull @
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getTempScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setTempScore:(Ljava/math/BigDecimal;)V
aload_3
getstatic # // Field cn/cloudwalk/elevator/em/CompareTypeEnum.RECOG:Lcn/cloudwalk/elevator/em/CompareTypeEnum;
invokevirtual # // Method cn/cloudwalk/elevator/em/CompareTypeEnum.getCode:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setCompareType:(Ljava/lang/Integer;)V
aload_3
areturn
public void onEvent(cn.cloudwalk.cwos.client.event.event.BaseEvent);
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent
invokevirtual # // Method onEvent:(Lcn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent;)V
return
static {};
Code:
ldc # // class cn/cloudwalk/elevator/handler/PersonRecordEventHandler
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic # // Field LOGGER:Lorg/slf4j/Logger;
return
}
@@ -0,0 +1,198 @@
public class cn.cloudwalk.elevator.handler.PersonRecordEventHandler extends cn.cloudwalk.elevator.handler.AbstractEventHandler implements cn.cloudwalk.event.handler.EventHandler<cn.cloudwalk.cwos.client.event.event.PersonRecordUploadEvent> {
private static final org.slf4j.Logger LOGGER;
private cn.cloudwalk.elevator.record.service.AcsRecogRecordService acsRecogRecordService;
public cn.cloudwalk.elevator.handler.PersonRecordEventHandler();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/handler/AbstractEventHandler."<init>":()V
return
public void onEvent(cn.cloudwalk.cwos.client.event.event.PersonRecordUploadEvent);
Code:
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 收到personRecordUploadEvent消息:{}
aload_1
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getBusinessId:()Ljava/lang/String;
invokevirtual # // Method getCloudwalkContext:(Ljava/lang/String;)Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
astore_2
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getDeviceId:()Ljava/lang/String;
aload_2
invokevirtual # // Method queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore_3
aload_0
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getSubDeviceId:()Ljava/lang/String;
aload_2
invokevirtual # // Method queryDeviceResult:(Ljava/lang/String;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;
astore _
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getFaces:()Ljava/util/List;
invokeinterface # // InterfaceMethod java/util/List.stream:()Ljava/util/stream/Stream;
invokedynamic # // InvokeDynamic #:apply:()Ljava/util/function/Function;
invokestatic # // Method java/util/stream/Collectors.groupingBy:(Ljava/util/function/Function;)Ljava/util/stream/Collector;
invokeinterface # // InterfaceMethod java/util/stream/Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
checkcast # // class java/util/Map
astore _
aload _
invokeinterface # // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
invokeinterface # // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
astore _
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq @
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class java/lang/String
astore _
aload _
aload _
invokeinterface # // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast # // class java/util/List
iconst_0
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cwos/client/event/event/mode/Face
astore _
aload_0
aload_1
aload _
invokespecial # // Method getParam:(Lcn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent;Lcn/cloudwalk/cwos/client/event/event/mode/Face;)Lcn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam;
astore _
aload _
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
aload _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setSubDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
aload_0
getfield # // Field acsRecogRecordService:Lcn/cloudwalk/elevator/record/service/AcsRecogRecordService;
aload _
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsRecogRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
pop
aload_0
new # // class java/util/Date
dup
invokespecial # // Method java/util/Date."<init>":()V
ldc # // String yyyy-MM-dd
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.parseDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getBusinessId:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/elevator/util/AcsCacheKeyUtil.getRecogCountKey:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method statisticsAddCache:(Ljava/lang/String;)V
goto @
astore _
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 保存人员识别记录失败,faceId:{},原因:
aload _
aload _
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
goto @
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore_2
getstatic # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 消费人员识别记录失败,原因:
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
goto @
astore _
invokestatic # // Method cn/cloudwalk/elevator/config/FeignThreadLocalUtil.remove:()V
aload _
athrow
return
Exception table:
from to target type
107 188 191 Class java/lang/Exception
14 210 216 Class java/lang/Exception
14 210 234 any
216 228 234 any
234 236 234 any
private cn.cloudwalk.elevator.record.param.AcsRecogRecordAddParam getParam(cn.cloudwalk.cwos.client.event.event.PersonRecordUploadEvent, cn.cloudwalk.cwos.client.event.event.mode.Face);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam
astore_3
aload_2
aload_3
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getPanoramaData:()Lcn/cloudwalk/cwos/client/event/event/mode/Panorama;
ifnull @
aload_3
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getPanoramaData:()Lcn/cloudwalk/cwos/client/event/event/mode/Panorama;
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Panorama.getPanoramaImagePath:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setPanoramaImagePath:(Ljava/lang/String;)V
aload_3
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getDeviceId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setDeviceCode:(Ljava/lang/String;)V
aload_3
aload_1
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent.getThreshold:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setThreshold:(Ljava/math/BigDecimal;)V
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setScore:(Ljava/math/BigDecimal;)V
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getQualityScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setQualityScore:(Ljava/math/BigDecimal;)V
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getMaskScore:()Ljava/lang/Float;
ifnull @
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getMaskScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setMaskScore:(Ljava/math/BigDecimal;)V
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getTempScore:()Ljava/lang/Float;
ifnull @
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/cwos/client/event/event/mode/Face.getTempScore:()Ljava/lang/Float;
invokevirtual # // Method java/lang/Float.floatValue:()F
f2d
invokestatic # // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setTempScore:(Ljava/math/BigDecimal;)V
aload_3
getstatic # // Field cn/cloudwalk/elevator/em/CompareTypeEnum.RECOG:Lcn/cloudwalk/elevator/em/CompareTypeEnum;
invokevirtual # // Method cn/cloudwalk/elevator/em/CompareTypeEnum.getCode:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsRecogRecordAddParam.setCompareType:(Ljava/lang/Integer;)V
aload_3
areturn
public void onEvent(cn.cloudwalk.cwos.client.event.event.BaseEvent);
Code:
aload_0
aload_1
checkcast # // class cn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent
invokevirtual # // Method onEvent:(Lcn/cloudwalk/cwos/client/event/event/PersonRecordUploadEvent;)V
return
static {};
Code:
ldc # // class cn/cloudwalk/elevator/handler/PersonRecordEventHandler
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic # // Field LOGGER:Lorg/slf4j/Logger;
return
}
@@ -0,0 +1,68 @@
--- cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController.v1
+++ cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController.v2
@@ -129,10 +129,10 @@
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 11
aload 11
-ifnull 550
+ifnull 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.size:()I
-ifle 550
+ifle 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 12
@@ -152,10 +152,10 @@
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 14
aload 14
-ifnull 415
+ifnull 205
aload 14
invokeinterface # // InterfaceMethod java/util/List.size:()I
-ifle 415
+ifle 205
aload 14
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 15
@@ -215,7 +215,7 @@
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 271
-goto 547
+goto 205
ldc # // String FLOOR
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
@@ -269,7 +269,7 @@
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 205
-goto 873
+goto 139
ldc # // String BUILDING
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
@@ -279,10 +279,10 @@
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 11
aload 11
-ifnull 741
+ifnull 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.size:()I
-ifle 741
+ifle 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 12
@@ -342,7 +342,7 @@
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 597
-goto 873
+goto 139
ldc # // String FLOOR
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
@@ -0,0 +1,537 @@
public class cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController extends cn.cloudwalk.elevator.common.AbstractCloudwalkController {
private cn.cloudwalk.elevator.device.service.AcsElevatorDeviceService elevatorDeviceService;
private cn.cloudwalk.elevator.codeElevatorArea.service.AcsElevatorCodeService elevatorCodeService;
private cn.cloudwalk.elevator.zone.service.ZoneService zoneService;
private cn.cloudwalk.client.cwoscomponent.intelligent.device.service.DeviceService deviceService;
private cn.cloudwalk.elevator.record.service.AcsElevatorRecordService elevatorRecordService;
private java.lang.String key;
private java.lang.Long time;
private java.lang.String keyA;
public cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/common/AbstractCloudwalkController."<init>":()V
return
public cn.cloudwalk.cloud.result.CloudwalkResult<java.util.List<cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceQueryFoDTO>> get(cn.cloudwalk.elevator.handler.device.form.AcsElevatorDeviceQueryForm);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
astore_2
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getFo:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/util/List;
astore_3
aload_3
ifnull 39
aload_3
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 39
aload_3
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
astore_3
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 查询派梯设备信息列表失败,原因:{}
aload_3
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 查询派梯设备信息列表失败
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/exception/ServiceException.getMessage:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
10 38 50 Class cn/cloudwalk/cloud/exception/ServiceException
39 49 50 Class cn/cloudwalk/cloud/exception/ServiceException
public cn.cloudwalk.cloud.result.CloudwalkResult<java.util.List<cn.cloudwalk.elevator.codeElevatorArea.dto.AcsElevatorCodeQueryDTO>> queryZoneTreeCode(cn.cloudwalk.elevator.handler.device.form.AcsElevatorCodeQueryForm);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
astore_2
ldc # // String
astore_3
ldc # // String
astore 4
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/handler/device/form/AcsElevatorCodeQueryForm.getDeviceCode:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
ifeq 50
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBuildingId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
astore_3
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBusinessId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
astore 4
new # // class cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam."<init>":()V
astore 5
aload_3
invokestatic # // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
ifeq 72
aload 5
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam.setParentId:(Ljava/lang/String;)V
aload 5
aload 4
invokevirtual # // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam.setBusinessId:(Ljava/lang/String;)V
aload_0
getfield # // Field zoneService:Lcn/cloudwalk/elevator/zone/service/ZoneService;
aload 5
aload_0
invokevirtual # // Method getCloudwalkContext:()Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/zone/service/ZoneService.tree:(Lcn/cloudwalk/elevator/zone/param/ZoneNextTreeParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 6
aload 6
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
astore 7
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore 8
aload 7
ifnull 876
aload 7
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 876
aload 7
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 9
aload 9
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 876
aload 9
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 10
ldc # // String PARK
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 553
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 11
aload 11
ifnull 550
aload 11
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 550
aload 11
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 12
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 550
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 13
ldc # // String BUILDING
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 418
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 14
aload 14
ifnull 415
aload 14
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 415
aload 14
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 15
aload 15
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 415
aload 15
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 16
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 17
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 18
aload 18
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 18
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 19
aload 19
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 402
aload 17
aload 19
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 17
aload 19
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 17
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 271
goto 547
ldc # // String FLOOR
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 547
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 14
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 14
ldc # // String FLOOR
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 15
aload 15
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 15
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 16
aload 16
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 537
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 14
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 205
goto 873
ldc # // String BUILDING
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 744
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 11
aload 11
ifnull 741
aload 11
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 741
aload 11
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 12
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 741
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 13
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 14
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 15
aload 15
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 15
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 16
aload 16
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 728
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 14
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 597
goto 873
ldc # // String FLOOR
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 873
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 11
aload 11
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 11
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 11
ldc # // String FLOOR
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
aload 11
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 12
aload 12
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 12
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 13
aload 13
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 863
aload 11
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 11
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 11
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 139
aload 8
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 9
aload 9
areturn
astore_2
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 获取区域的电梯编码失败,原因:
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 获取区域的电梯编码失败
aload_2
invokevirtual # // Method java/lang/Exception.getMessage:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
0 885 886 Class java/lang/Exception
public cn.cloudwalk.cloud.result.CloudwalkResult addElevatorRecord(cn.cloudwalk.elevator.handler.device.form.AcsElevatorRecordAddForm);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
astore_2
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/handler/device/form/AcsElevatorRecordAddForm.getDeviceCode:()Ljava/lang/String;
astore_3
new # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
dup
invokespecial # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam."<init>":()V
astore 4
aload 4
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setDeviceCode:(Ljava/lang/String;)V
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore 5
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload 4
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBusinessId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
astore 6
aload 6
invokestatic # // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
ifeq 68
aload_2
aload 6
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setBusinessId:(Ljava/lang/String;)V
goto 74
aload_2
ldc # // String 000
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setBusinessId:(Ljava/lang/String;)V
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore 7
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getByDeciveCode:(Ljava/lang/String;)Lcn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO;
astore 8
new # // class cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult
dup
invokespecial # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult."<init>":()V
astore 9
aload 8
ifnull 154
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setId:(Ljava/lang/String;)V
aload 9
aload_3
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceCode:(Ljava/lang/String;)V
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getDeviceName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceName:(Ljava/lang/String;)V
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getDeviceTypeName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceTypeName:(Ljava/lang/String;)V
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getAreaId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setAreaId:(Ljava/lang/String;)V
aload_2
aload 9
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore 10
aload_0
getfield # // Field elevatorRecordService:Lcn/cloudwalk/elevator/record/service/AcsElevatorRecordService;
aload_2
aload_0
invokevirtual # // Method getCloudwalkContext:()Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsElevatorRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 11
aload 11
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
astore_3
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 添加刷脸派梯记录失败,原因:
aload_3
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 00
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/exception/ServiceException.getMessage:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
10 189 190 Class cn/cloudwalk/cloud/exception/ServiceException
public cn.cloudwalk.cloud.result.CloudwalkResult<cn.cloudwalk.elevator.device.result.KeyValueResult> getKey(cn.cloudwalk.elevator.handler.device.form.AcsElevatorRecordAddForm);
Code:
new # // class cn/cloudwalk/elevator/device/result/KeyValueResult
dup
invokespecial # // Method cn/cloudwalk/elevator/device/result/KeyValueResult."<init>":()V
astore_2
aload_2
aload_0
getfield # // Field key:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setKey:(Ljava/lang/String;)V
aload_2
aload_0
getfield # // Field time:Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setTime:(Ljava/lang/Long;)V
aload_2
aload_0
getfield # // Field keyA:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setKeyA:(Ljava/lang/String;)V
aload_2
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
}
@@ -0,0 +1,537 @@
public class cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController extends cn.cloudwalk.elevator.common.AbstractCloudwalkController {
private cn.cloudwalk.elevator.device.service.AcsElevatorDeviceService elevatorDeviceService;
private cn.cloudwalk.elevator.codeElevatorArea.service.AcsElevatorCodeService elevatorCodeService;
private cn.cloudwalk.elevator.zone.service.ZoneService zoneService;
private cn.cloudwalk.client.cwoscomponent.intelligent.device.service.DeviceService deviceService;
private cn.cloudwalk.elevator.record.service.AcsElevatorRecordService elevatorRecordService;
private java.lang.String key;
private java.lang.Long time;
private java.lang.String keyA;
public cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/common/AbstractCloudwalkController."<init>":()V
return
public cn.cloudwalk.cloud.result.CloudwalkResult<java.util.List<cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceQueryFoDTO>> get(cn.cloudwalk.elevator.handler.device.form.AcsElevatorDeviceQueryForm);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
astore_2
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getFo:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/util/List;
astore_3
aload_3
ifnull 39
aload_3
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 39
aload_3
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
astore_3
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 查询派梯设备信息列表失败,原因:{}
aload_3
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 查询派梯设备信息列表失败
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/exception/ServiceException.getMessage:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
10 38 50 Class cn/cloudwalk/cloud/exception/ServiceException
39 49 50 Class cn/cloudwalk/cloud/exception/ServiceException
public cn.cloudwalk.cloud.result.CloudwalkResult<java.util.List<cn.cloudwalk.elevator.codeElevatorArea.dto.AcsElevatorCodeQueryDTO>> queryZoneTreeCode(cn.cloudwalk.elevator.handler.device.form.AcsElevatorCodeQueryForm);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
astore_2
ldc # // String
astore_3
ldc # // String
astore 4
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/handler/device/form/AcsElevatorCodeQueryForm.getDeviceCode:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
ifeq 50
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBuildingId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
astore_3
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBusinessId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
astore 4
new # // class cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam."<init>":()V
astore 5
aload_3
invokestatic # // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
ifeq 72
aload 5
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam.setParentId:(Ljava/lang/String;)V
aload 5
aload 4
invokevirtual # // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam.setBusinessId:(Ljava/lang/String;)V
aload_0
getfield # // Field zoneService:Lcn/cloudwalk/elevator/zone/service/ZoneService;
aload 5
aload_0
invokevirtual # // Method getCloudwalkContext:()Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/zone/service/ZoneService.tree:(Lcn/cloudwalk/elevator/zone/param/ZoneNextTreeParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 6
aload 6
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
astore 7
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore 8
aload 7
ifnull 876
aload 7
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 876
aload 7
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 9
aload 9
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 876
aload 9
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 10
ldc # // String PARK
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 553
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 11
aload 11
ifnull 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 12
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 550
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 13
ldc # // String BUILDING
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 418
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 14
aload 14
ifnull 205
aload 14
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 205
aload 14
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 15
aload 15
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 415
aload 15
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 16
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 17
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 17
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 18
aload 18
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 18
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 19
aload 19
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 402
aload 17
aload 19
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 17
aload 19
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 17
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 271
goto 205
ldc # // String FLOOR
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 547
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 14
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 14
ldc # // String FLOOR
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 15
aload 15
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 15
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 16
aload 16
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 537
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 14
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 205
goto 139
ldc # // String BUILDING
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 744
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
astore 11
aload 11
ifnull 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.size:()I
ifle 139
aload 11
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore 12
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq 741
aload 12
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
astore 13
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 14
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
aload 14
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 15
aload 15
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 15
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 16
aload 16
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 728
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 14
aload 16
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 14
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 597
goto 139
ldc # // String FLOOR
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
invokevirtual # // Method java/lang/String.equals:(Ljava/lang/Object;)Z
ifeq 873
new # // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
astore 11
aload 11
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
aload 11
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
aload 11
ldc # // String FLOOR
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
aload 11
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
dup
invokespecial # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
astore 12
aload 12
aload 10
invokevirtual # // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
aload_0
getfield # // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
aload 12
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
astore 13
aload 13
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne 863
aload 11
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
aload 11
aload 13
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
aload 8
aload 11
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto 139
aload 8
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 9
aload 9
areturn
astore_2
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 获取区域的电梯编码失败,原因:
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 获取区域的电梯编码失败
aload_2
invokevirtual # // Method java/lang/Exception.getMessage:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
0 885 886 Class java/lang/Exception
public cn.cloudwalk.cloud.result.CloudwalkResult addElevatorRecord(cn.cloudwalk.elevator.handler.device.form.AcsElevatorRecordAddForm);
Code:
aload_1
ldc # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
invokestatic # // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
astore_2
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/handler/device/form/AcsElevatorRecordAddForm.getDeviceCode:()Ljava/lang/String;
astore_3
new # // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
dup
invokespecial # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam."<init>":()V
astore 4
aload 4
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setDeviceCode:(Ljava/lang/String;)V
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore 5
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload 4
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBusinessId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
astore 6
aload 6
invokestatic # // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
ifeq 68
aload_2
aload 6
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setBusinessId:(Ljava/lang/String;)V
goto 74
aload_2
ldc # // String 000
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setBusinessId:(Ljava/lang/String;)V
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore 7
aload_0
getfield # // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getByDeciveCode:(Ljava/lang/String;)Lcn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO;
astore 8
new # // class cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult
dup
invokespecial # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult."<init>":()V
astore 9
aload 8
ifnull 154
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setId:(Ljava/lang/String;)V
aload 9
aload_3
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceCode:(Ljava/lang/String;)V
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getDeviceName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceName:(Ljava/lang/String;)V
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getDeviceTypeName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceTypeName:(Ljava/lang/String;)V
aload 9
aload 8
invokevirtual # // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getAreaId:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setAreaId:(Ljava/lang/String;)V
aload_2
aload 9
invokevirtual # // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore 10
aload_0
getfield # // Field elevatorRecordService:Lcn/cloudwalk/elevator/record/service/AcsElevatorRecordService;
aload_2
aload_0
invokevirtual # // Method getCloudwalkContext:()Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsElevatorRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore 11
aload 11
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
astore_3
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 添加刷脸派梯记录失败,原因:
aload_3
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 00
aload_3
invokevirtual # // Method cn/cloudwalk/cloud/exception/ServiceException.getMessage:()Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
10 189 190 Class cn/cloudwalk/cloud/exception/ServiceException
public cn.cloudwalk.cloud.result.CloudwalkResult<cn.cloudwalk.elevator.device.result.KeyValueResult> getKey(cn.cloudwalk.elevator.handler.device.form.AcsElevatorRecordAddForm);
Code:
new # // class cn/cloudwalk/elevator/device/result/KeyValueResult
dup
invokespecial # // Method cn/cloudwalk/elevator/device/result/KeyValueResult."<init>":()V
astore_2
aload_2
aload_0
getfield # // Field key:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setKey:(Ljava/lang/String;)V
aload_2
aload_0
getfield # // Field time:Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setTime:(Ljava/lang/Long;)V
aload_2
aload_0
getfield # // Field keyA:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setKeyA:(Ljava/lang/String;)V
aload_2
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
}
@@ -0,0 +1,14 @@
--- cn.cloudwalk.elevator.handler.device.controller.FileController.v1
+++ cn.cloudwalk.elevator.handler.device.controller.FileController.v2
@@ -24,9 +24,9 @@
getstatic # // Field cn/cloudwalk/elevator/config/ImageStoreConstants.MAX_FILE:Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.intValue:()I
if_icmple 47
-ldc # // String 53060428
+ldc # // String 53060428
aload_0
-ldc # // String 53060428
+ldc # // String 53060428
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
@@ -0,0 +1,79 @@
public class cn.cloudwalk.elevator.handler.device.controller.FileController extends cn.cloudwalk.elevator.common.AbstractCloudwalkController {
private cn.cloudwalk.elevator.record.service.PersonFileService personFileService;
public cn.cloudwalk.elevator.handler.device.controller.FileController();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/common/AbstractCloudwalkController."<init>":()V
return
public cn.cloudwalk.cloud.result.CloudwalkResult<java.lang.String> fileUpload(java.lang.String);
Code:
aload_1
invokestatic # // Method org/apache/commons/lang3/StringUtils.isEmpty:(Ljava/lang/CharSequence;)Z
ifeq @
ldc # // String 53060544
aload_0
ldc # // String 53060544
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload_1
invokestatic # // Method javax/xml/bind/DatatypeConverter.parseBase64Binary:(Ljava/lang/String;)[B
astore_2
aload_2
arraylength
getstatic # // Field cn/cloudwalk/elevator/config/ImageStoreConstants.MAX_FILE:Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.intValue:()I
if_icmple 47
ldc # // String 53060428
aload_0
ldc # // String 53060428
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
invokestatic # // Method cn/cloudwalk/elevator/util/ToolUtil.generateUUID:()Ljava/lang/String;
astore_3
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 上传文件:{},size={}
aload_3
aload_2
arraylength
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
aload_0
getfield # // Field personFileService:Lcn/cloudwalk/elevator/record/service/PersonFileService;
aload_3
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/PersonFileService.upload:(Ljava/lang/String;[B)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore _
aload _
ifnull @
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/lang/CharSequence
invokestatic # // Method org/apache/commons/lang3/StringUtils.isNotBlank:(Ljava/lang/CharSequence;)Z
ifeq @
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload _
areturn
astore_2
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 80014013
aload_0
ldc # // String 80014013
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
19 46 112 Class java/lang/Exception
47 108 112 Class java/lang/Exception
109 111 112 Class java/lang/Exception
}
@@ -0,0 +1,79 @@
public class cn.cloudwalk.elevator.handler.device.controller.FileController extends cn.cloudwalk.elevator.common.AbstractCloudwalkController {
private cn.cloudwalk.elevator.record.service.PersonFileService personFileService;
public cn.cloudwalk.elevator.handler.device.controller.FileController();
Code:
aload_0
invokespecial # // Method cn/cloudwalk/elevator/common/AbstractCloudwalkController."<init>":()V
return
public cn.cloudwalk.cloud.result.CloudwalkResult<java.lang.String> fileUpload(java.lang.String);
Code:
aload_1
invokestatic # // Method org/apache/commons/lang3/StringUtils.isEmpty:(Ljava/lang/CharSequence;)Z
ifeq @
ldc # // String 53060544
aload_0
ldc # // String 53060544
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload_1
invokestatic # // Method javax/xml/bind/DatatypeConverter.parseBase64Binary:(Ljava/lang/String;)[B
astore_2
aload_2
arraylength
getstatic # // Field cn/cloudwalk/elevator/config/ImageStoreConstants.MAX_FILE:Ljava/lang/Integer;
invokevirtual # // Method java/lang/Integer.intValue:()I
if_icmple 47
ldc # // String 53060428
aload_0
ldc # // String 53060428
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
invokestatic # // Method cn/cloudwalk/elevator/util/ToolUtil.generateUUID:()Ljava/lang/String;
astore_3
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String 上传文件:{},size={}
aload_3
aload_2
arraylength
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
aload_0
getfield # // Field personFileService:Lcn/cloudwalk/elevator/record/service/PersonFileService;
aload_3
aload_2
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/service/PersonFileService.upload:(Ljava/lang/String;[B)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore _
aload _
ifnull @
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/lang/CharSequence
invokestatic # // Method org/apache/commons/lang3/StringUtils.isNotBlank:(Ljava/lang/CharSequence;)Z
ifeq @
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
aload _
areturn
astore_2
aload_0
getfield # // Field LOGGER:Lorg/slf4j/Logger;
ldc # // String
aload_2
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
ldc # // String 80014013
aload_0
ldc # // String 80014013
invokevirtual # // Method getMessage:(Ljava/lang/String;)Ljava/lang/String;
invokestatic # // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
areturn
Exception table:
from to target type
19 46 112 Class java/lang/Exception
47 108 112 Class java/lang/Exception
109 111 112 Class java/lang/Exception
}
@@ -0,0 +1,22 @@
--- cn.cloudwalk.elevator.task.ElevatorRecordSendTask.v1
+++ cn.cloudwalk.elevator.task.ElevatorRecordSendTask.v2
@@ -224,7 +224,7 @@
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/result/SendRecordTokenResult
invokevirtual # // Method cn/cloudwalk/elevator/record/result/SendRecordTokenResult.getToken:()Ljava/lang/String;
-invokeinterface # // InterfaceMethod org/springframework/util/MultiValueMap.add:(Ljava/lang/Object;Ljava/lang/Object;)V
+invokevirtual # // Method org/springframework/util/LinkedMultiValueMap.add:(Ljava/lang/Object;Ljava/lang/Object;)V
aload_0
ldc # // String /forward_webfront/api/pti-oapi/v2/api/starriver/device/sign-third-import
aload _
@@ -294,8 +294,8 @@
return
Exception table:
from to target type
-11 58 626 Class java/lang/Exception
-59 623 626 Class java/lang/Exception
+11 58 624 Class java/lang/Exception
+59 621 624 Class java/lang/Exception
private java.net.URI combineAuthClientURI(java.lang.String, org.springframework.util.MultiValueMap<java.lang.String, java.lang.String>);
Code:
new # // class java/lang/StringBuilder
@@ -0,0 +1,318 @@
public class cn.cloudwalk.elevator.task.ElevatorRecordSendTask {
private org.slf4j.Logger logger;
private java.lang.String sendRecordIp;
private java.lang.String corpId;
private java.lang.String appKey;
private java.lang.String appSecret;
private java.lang.Boolean sendBoolean;
private static final long EXPIRE_TIME;
private cn.cloudwalk.elevator.record.dao.AcsElevatorRecordDao acsElevatorRecordDao;
private cn.cloudwalk.elevator.record.dao.SendRecordTimeDao sendRecordTimeDao;
private cn.cloudwalk.client.cwoscomponent.intelligent.record.service.AcsRecordThreeSendService acsRecordThreeSendService;
public cn.cloudwalk.elevator.task.ElevatorRecordSendTask();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
aload_0
ldc # // class cn/cloudwalk/elevator/task/ElevatorRecordSendTask
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putfield # // Field logger:Lorg/slf4j/Logger;
return
public void execute();
Code:
aload_0
getfield # // Field sendBoolean:Ljava/lang/Boolean;
invokevirtual # // Method java/lang/Boolean.booleanValue:()Z
ifne @
return
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.getByType:(Ljava/lang/Integer;)Lcn/cloudwalk/elevator/record/dto/SendRecordTimeResultDTO;
astore_1
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore_2
aload_1
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne @
aload_2
invokevirtual # // Method java/lang/Long.longValue:()J
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeResultDTO.getTime:()Ljava/lang/Long;
invokevirtual # // Method java/lang/Long.longValue:()J
lsub
ldc2_w # // long 3600000l
lcmp
ifge @
return
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeResultDTO.getTime:()Ljava/lang/Long;
astore_2
goto @
new # // class cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO."<init>":()V
astore_3
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO.setTime:(Ljava/lang/Long;)V
aload_3
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO.setType:(Ljava/lang/Integer;)V
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.add:(Lcn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO;)Ljava/lang/Integer;
pop
new # // class cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO."<init>":()V
astore_3
aload_3
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setType:(Ljava/lang/Integer;)V
aload_3
aload_2
invokevirtual # // Method java/lang/Long.longValue:()J
ldc2_w # // long 10000l
ladd
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setTime:(Ljava/lang/Long;)V
new # // class cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam
dup
invokespecial # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam."<init>":()V
astore _
aload _
aload_2
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam.setStartTime:(Ljava/lang/Long;)V
aload_0
getfield # // Field acsRecordThreeSendService:Lcn/cloudwalk/client/cwoscomponent/intelligent/record/service/AcsRecordThreeSendService;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/client/cwoscomponent/intelligent/record/service/AcsRecordThreeSendService.listByTime:(Lcn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore _
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 查询时间戳为:{},获取的门禁记录数据为:{}
aload_2
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/Collection
invokestatic # // Method org/springframework/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
ifne @
aload_3
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
invokeinterface # // InterfaceMethod java/util/List.size:()I
iconst_1
isub
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getRecognitionTime:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setTime:(Ljava/lang/Long;)V
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.getTime:()Ljava/lang/Long;
aload_2
invokevirtual # // Method java/lang/Long.equals:(Ljava/lang/Object;)Z
ifeq @
aload_3
aload_2
invokevirtual # // Method java/lang/Long.longValue:()J
ldc2_w # // long 10l
ladd
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setTime:(Ljava/lang/Long;)V
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore _
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore _
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq @
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult
astore _
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getPersonCode:()Ljava/lang/String;
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne @
new # // class cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam
dup
invokespecial # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam."<init>":()V
astore _
aload _
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getPersonCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam.setEmployeeCode:(Ljava/lang/String;)V
aload _
new # // class java/util/Date
dup
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getRecognitionTime:()J
invokespecial # // Method java/util/Date."<init>":(J)V
ldc # // String yyyy-MM-dd HH:mm:ss
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.parseDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam.setSignTime:(Ljava/lang/String;)V
aload _
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getDeviceName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam.setDeviceName:(Ljava/lang/String;)V
aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto @
aload _
invokestatic # // Method org/springframework/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
ifne @
new # // class cn/cloudwalk/elevator/record/param/SendRecordTokenParam
dup
invokespecial # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam."<init>":()V
astore _
aload _
aload_0
getfield # // Field corpId:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam.setCorpId:(Ljava/lang/String;)V
aload _
aload_0
getfield # // Field appKey:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam.setAppKey:(Ljava/lang/String;)V
aload _
aload_0
getfield # // Field appSecret:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam.setAppSecret:(Ljava/lang/String;)V
aload_0
ldc # // String forward_webfront/api/pti-oapi/token/get
aconst_null
invokespecial # // Method combineAuthClientURI:(Ljava/lang/String;Lorg/springframework/util/MultiValueMap;)Ljava/net/URI;
astore _
aload _
aload _
aconst_null
new # // class cn/cloudwalk/elevator/task/ElevatorRecordSendTask$1
dup
aload_0
invokespecial # // Method cn/cloudwalk/elevator/task/ElevatorRecordSendTask$1."<init>":(Lcn/cloudwalk/elevator/task/ElevatorRecordSendTask;)V
invokestatic # // Method cn/cloudwalk/elevator/util/RestTemplateUtil.post:(Ljava/net/URI;Ljava/lang/Object;Lorg/springframework/http/HttpHeaders;Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/result/CloudwalkResult
astore _
new # // class org/springframework/util/LinkedMultiValueMap
dup
invokespecial # // Method org/springframework/util/LinkedMultiValueMap."<init>":()V
astore _
aload _
ldc # // String token
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/result/SendRecordTokenResult
invokevirtual # // Method cn/cloudwalk/elevator/record/result/SendRecordTokenResult.getToken:()Ljava/lang/String;
invokeinterface # // InterfaceMethod org/springframework/util/MultiValueMap.add:(Ljava/lang/Object;Ljava/lang/Object;)V
aload_0
ldc # // String /forward_webfront/api/pti-oapi/v2/api/starriver/device/sign-third-import
aload _
invokespecial # // Method combineAuthClientURI:(Ljava/lang/String;Lorg/springframework/util/MultiValueMap;)Ljava/net/URI;
astore _
new # // class org/springframework/http/HttpHeaders
dup
invokespecial # // Method org/springframework/http/HttpHeaders."<init>":()V
astore _
aload _
ldc # // String token
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/result/SendRecordTokenResult
invokevirtual # // Method cn/cloudwalk/elevator/record/result/SendRecordTokenResult.getToken:()Ljava/lang/String;
invokevirtual # // Method org/springframework/http/HttpHeaders.set:(Ljava/lang/String;Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/record/param/SendRecordSendParam
dup
invokespecial # // Method cn/cloudwalk/elevator/record/param/SendRecordSendParam."<init>":()V
astore _
aload _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendParam.setRecords:(Ljava/util/List;)V
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 推送通行记录数据为:{}
aload _
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload _
aload _
aload _
new # // class cn/cloudwalk/elevator/task/ElevatorRecordSendTask$2
dup
aload_0
invokespecial # // Method cn/cloudwalk/elevator/task/ElevatorRecordSendTask$2."<init>":(Lcn/cloudwalk/elevator/task/ElevatorRecordSendTask;)V
invokestatic # // Method cn/cloudwalk/elevator/util/RestTemplateUtil.post:(Ljava/net/URI;Ljava/lang/Object;Lorg/springframework/http/HttpHeaders;Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/result/CloudwalkResult
astore _
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 调用第三方接口发送通行记录数据结束,返回结果为:{}
aload _
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.update:(Lcn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO;)Ljava/lang/Integer;
pop
goto @
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.update:(Lcn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO;)Ljava/lang/Integer;
pop
goto @
astore_1
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 派梯记录推送失败,失败原因是:{}
aload_1
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
return
Exception table:
from to target type
11 58 626 Class java/lang/Exception
59 623 626 Class java/lang/Exception
private java.net.URI combineAuthClientURI(java.lang.String, org.springframework.util.MultiValueMap<java.lang.String, java.lang.String>);
Code:
new # // class java/lang/StringBuilder
dup
invokespecial # // Method java/lang/StringBuilder."<init>":()V
ldc # // String http://
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
getfield # // Field sendRecordIp:Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokestatic # // Method org/springframework/web/util/UriComponentsBuilder.fromUriString:(Ljava/lang/String;)Lorg/springframework/web/util/UriComponentsBuilder;
aload_1
invokevirtual # // Method org/springframework/web/util/UriComponentsBuilder.path:(Ljava/lang/String;)Lorg/springframework/web/util/UriComponentsBuilder;
aload_2
invokevirtual # // Method org/springframework/web/util/UriComponentsBuilder.queryParams:(Lorg/springframework/util/MultiValueMap;)Lorg/springframework/web/util/UriComponentsBuilder;
invokevirtual # // Method org/springframework/web/util/UriComponentsBuilder.build:()Lorg/springframework/web/util/UriComponents;
invokevirtual # // Method org/springframework/web/util/UriComponents.toUri:()Ljava/net/URI;
areturn
}
@@ -0,0 +1,318 @@
public class cn.cloudwalk.elevator.task.ElevatorRecordSendTask {
private org.slf4j.Logger logger;
private java.lang.String sendRecordIp;
private java.lang.String corpId;
private java.lang.String appKey;
private java.lang.String appSecret;
private java.lang.Boolean sendBoolean;
private static final long EXPIRE_TIME;
private cn.cloudwalk.elevator.record.dao.AcsElevatorRecordDao acsElevatorRecordDao;
private cn.cloudwalk.elevator.record.dao.SendRecordTimeDao sendRecordTimeDao;
private cn.cloudwalk.client.cwoscomponent.intelligent.record.service.AcsRecordThreeSendService acsRecordThreeSendService;
public cn.cloudwalk.elevator.task.ElevatorRecordSendTask();
Code:
aload_0
invokespecial # // Method java/lang/Object."<init>":()V
aload_0
ldc # // class cn/cloudwalk/elevator/task/ElevatorRecordSendTask
invokestatic # // Method org/slf4j/LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putfield # // Field logger:Lorg/slf4j/Logger;
return
public void execute();
Code:
aload_0
getfield # // Field sendBoolean:Ljava/lang/Boolean;
invokevirtual # // Method java/lang/Boolean.booleanValue:()Z
ifne @
return
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.getByType:(Ljava/lang/Integer;)Lcn/cloudwalk/elevator/record/dto/SendRecordTimeResultDTO;
astore_1
invokestatic # // Method java/lang/System.currentTimeMillis:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
astore_2
aload_1
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne @
aload_2
invokevirtual # // Method java/lang/Long.longValue:()J
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeResultDTO.getTime:()Ljava/lang/Long;
invokevirtual # // Method java/lang/Long.longValue:()J
lsub
ldc2_w # // long 3600000l
lcmp
ifge @
return
aload_1
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeResultDTO.getTime:()Ljava/lang/Long;
astore_2
goto @
new # // class cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO."<init>":()V
astore_3
aload_3
aload_2
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO.setTime:(Ljava/lang/Long;)V
aload_3
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO.setType:(Ljava/lang/Integer;)V
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.add:(Lcn/cloudwalk/elevator/record/dto/SendRecordTimeAddDTO;)Ljava/lang/Integer;
pop
new # // class cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO
dup
invokespecial # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO."<init>":()V
astore_3
aload_3
iconst_2
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setType:(Ljava/lang/Integer;)V
aload_3
aload_2
invokevirtual # // Method java/lang/Long.longValue:()J
ldc2_w # // long 10000l
ladd
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setTime:(Ljava/lang/Long;)V
new # // class cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam
dup
invokespecial # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam."<init>":()V
astore _
aload _
aload_2
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam.setStartTime:(Ljava/lang/Long;)V
aload_0
getfield # // Field acsRecordThreeSendService:Lcn/cloudwalk/client/cwoscomponent/intelligent/record/service/AcsRecordThreeSendService;
aload _
invokeinterface # // InterfaceMethod cn/cloudwalk/client/cwoscomponent/intelligent/record/service/AcsRecordThreeSendService.listByTime:(Lcn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
astore _
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 查询时间戳为:{},获取的门禁记录数据为:{}
aload_2
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/Collection
invokestatic # // Method org/springframework/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
ifne @
aload_3
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
invokeinterface # // InterfaceMethod java/util/List.size:()I
iconst_1
isub
invokeinterface # // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getRecognitionTime:()J
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setTime:(Ljava/lang/Long;)V
aload_3
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.getTime:()Ljava/lang/Long;
aload_2
invokevirtual # // Method java/lang/Long.equals:(Ljava/lang/Object;)Z
ifeq @
aload_3
aload_2
invokevirtual # // Method java/lang/Long.longValue:()J
ldc2_w # // long 10l
ladd
invokestatic # // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
invokevirtual # // Method cn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO.setTime:(Ljava/lang/Long;)V
new # // class java/util/ArrayList
dup
invokespecial # // Method java/util/ArrayList."<init>":()V
astore _
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class java/util/List
invokeinterface # // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
astore _
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.hasNext:()Z
ifeq @
aload _
invokeinterface # // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult
astore _
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getPersonCode:()Ljava/lang/String;
invokestatic # // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
ifne @
new # // class cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam
dup
invokespecial # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam."<init>":()V
astore _
aload _
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getPersonCode:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam.setEmployeeCode:(Ljava/lang/String;)V
aload _
new # // class java/util/Date
dup
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getRecognitionTime:()J
invokespecial # // Method java/util/Date."<init>":(J)V
ldc # // String yyyy-MM-dd HH:mm:ss
invokestatic # // Method cn/cloudwalk/elevator/util/DateUtils.parseDate:(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam.setSignTime:(Ljava/lang/String;)V
aload _
aload _
invokevirtual # // Method cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.getDeviceName:()Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendInfoParam.setDeviceName:(Ljava/lang/String;)V
aload _
aload _
invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
pop
goto @
aload _
invokestatic # // Method org/springframework/util/CollectionUtils.isEmpty:(Ljava/util/Collection;)Z
ifne @
new # // class cn/cloudwalk/elevator/record/param/SendRecordTokenParam
dup
invokespecial # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam."<init>":()V
astore _
aload _
aload_0
getfield # // Field corpId:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam.setCorpId:(Ljava/lang/String;)V
aload _
aload_0
getfield # // Field appKey:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam.setAppKey:(Ljava/lang/String;)V
aload _
aload_0
getfield # // Field appSecret:Ljava/lang/String;
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordTokenParam.setAppSecret:(Ljava/lang/String;)V
aload_0
ldc # // String forward_webfront/api/pti-oapi/token/get
aconst_null
invokespecial # // Method combineAuthClientURI:(Ljava/lang/String;Lorg/springframework/util/MultiValueMap;)Ljava/net/URI;
astore _
aload _
aload _
aconst_null
new # // class cn/cloudwalk/elevator/task/ElevatorRecordSendTask$1
dup
aload_0
invokespecial # // Method cn/cloudwalk/elevator/task/ElevatorRecordSendTask$1."<init>":(Lcn/cloudwalk/elevator/task/ElevatorRecordSendTask;)V
invokestatic # // Method cn/cloudwalk/elevator/util/RestTemplateUtil.post:(Ljava/net/URI;Ljava/lang/Object;Lorg/springframework/http/HttpHeaders;Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/result/CloudwalkResult
astore _
new # // class org/springframework/util/LinkedMultiValueMap
dup
invokespecial # // Method org/springframework/util/LinkedMultiValueMap."<init>":()V
astore _
aload _
ldc # // String token
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/result/SendRecordTokenResult
invokevirtual # // Method cn/cloudwalk/elevator/record/result/SendRecordTokenResult.getToken:()Ljava/lang/String;
invokevirtual # // Method org/springframework/util/LinkedMultiValueMap.add:(Ljava/lang/Object;Ljava/lang/Object;)V
aload_0
ldc # // String /forward_webfront/api/pti-oapi/v2/api/starriver/device/sign-third-import
aload _
invokespecial # // Method combineAuthClientURI:(Ljava/lang/String;Lorg/springframework/util/MultiValueMap;)Ljava/net/URI;
astore _
new # // class org/springframework/http/HttpHeaders
dup
invokespecial # // Method org/springframework/http/HttpHeaders."<init>":()V
astore _
aload _
ldc # // String token
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
checkcast # // class cn/cloudwalk/elevator/record/result/SendRecordTokenResult
invokevirtual # // Method cn/cloudwalk/elevator/record/result/SendRecordTokenResult.getToken:()Ljava/lang/String;
invokevirtual # // Method org/springframework/http/HttpHeaders.set:(Ljava/lang/String;Ljava/lang/String;)V
new # // class cn/cloudwalk/elevator/record/param/SendRecordSendParam
dup
invokespecial # // Method cn/cloudwalk/elevator/record/param/SendRecordSendParam."<init>":()V
astore _
aload _
aload _
invokevirtual # // Method cn/cloudwalk/elevator/record/param/SendRecordSendParam.setRecords:(Ljava/util/List;)V
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 推送通行记录数据为:{}
aload _
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload _
aload _
aload _
new # // class cn/cloudwalk/elevator/task/ElevatorRecordSendTask$2
dup
aload_0
invokespecial # // Method cn/cloudwalk/elevator/task/ElevatorRecordSendTask$2."<init>":(Lcn/cloudwalk/elevator/task/ElevatorRecordSendTask;)V
invokestatic # // Method cn/cloudwalk/elevator/util/RestTemplateUtil.post:(Ljava/net/URI;Ljava/lang/Object;Lorg/springframework/http/HttpHeaders;Lcom/fasterxml/jackson/core/type/TypeReference;)Ljava/lang/Object;
checkcast # // class cn/cloudwalk/cloud/result/CloudwalkResult
astore _
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 调用第三方接口发送通行记录数据结束,返回结果为:{}
aload _
invokestatic # // Method com/alibaba/fastjson/JSON.toJSONString:(Ljava/lang/Object;)Ljava/lang/String;
invokeinterface # // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.update:(Lcn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO;)Ljava/lang/Integer;
pop
goto @
aload _
invokevirtual # // Method cn/cloudwalk/cloud/result/CloudwalkResult.isSuccess:()Z
ifeq @
aload_0
getfield # // Field sendRecordTimeDao:Lcn/cloudwalk/elevator/record/dao/SendRecordTimeDao;
aload_3
invokeinterface # // InterfaceMethod cn/cloudwalk/elevator/record/dao/SendRecordTimeDao.update:(Lcn/cloudwalk/elevator/record/dto/SendRecordTimeEditDTO;)Ljava/lang/Integer;
pop
goto @
astore_1
aload_0
getfield # // Field logger:Lorg/slf4j/Logger;
ldc # // String 派梯记录推送失败,失败原因是:{}
aload_1
invokeinterface # // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
return
Exception table:
from to target type
11 58 624 Class java/lang/Exception
59 621 624 Class java/lang/Exception
private java.net.URI combineAuthClientURI(java.lang.String, org.springframework.util.MultiValueMap<java.lang.String, java.lang.String>);
Code:
new # // class java/lang/StringBuilder
dup
invokespecial # // Method java/lang/StringBuilder."<init>":()V
ldc # // String http://
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
getfield # // Field sendRecordIp:Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokestatic # // Method org/springframework/web/util/UriComponentsBuilder.fromUriString:(Ljava/lang/String;)Lorg/springframework/web/util/UriComponentsBuilder;
aload_1
invokevirtual # // Method org/springframework/web/util/UriComponentsBuilder.path:(Ljava/lang/String;)Lorg/springframework/web/util/UriComponentsBuilder;
aload_2
invokevirtual # // Method org/springframework/web/util/UriComponentsBuilder.queryParams:(Lorg/springframework/util/MultiValueMap;)Lorg/springframework/web/util/UriComponentsBuilder;
invokevirtual # // Method org/springframework/web/util/UriComponentsBuilder.build:()Lorg/springframework/web/util/UriComponents;
invokevirtual # // Method org/springframework/web/util/UriComponents.toUri:()Ljava/net/URI;
areturn
}
@@ -0,0 +1,218 @@
--- cn.cloudwalk.elevator.util.DateUtils.v1
+++ cn.cloudwalk.elevator.util.DateUtils.v2
@@ -332,7 +332,7 @@
invokevirtual # // Method java/text/DateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
invokestatic # // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
invokestatic # // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
pop
aload _
bipush 6
@@ -348,26 +348,22 @@
bipush 7
istore _
aload _
-invokeinterface # // InterfaceMethod java/util/List.size:()I
-iload _
-if_icmple 164
+invokevirtual # // Method java/util/ArrayList.size:()I
+iload _
+if_icmple 156
ldc # // String 月
-astore _
-goto @
-aload _
-invokeinterface # // InterfaceMethod java/util/List.size:()I
-iconst_1
-if_icmple 181
+areturn
+aload _
+invokevirtual # // Method java/util/ArrayList.size:()I
+iconst_1
+if_icmple 167
ldc # // String 周
-astore _
-goto @
+areturn
ldc # // String 日
-astore _
-aload _
areturn
Exception table:
from to target type
-31 125 128 Class java/text/ParseException
+31 123 126 Class java/text/ParseException
public static java.lang.Long todayStart();
Code:
invokestatic # // Method java/util/Calendar.getInstance:()Ljava/util/Calendar;
@@ -603,11 +599,11 @@
ldc # // String 天
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
-iinc 2, -1
lload _
lconst_0
lcmp
ifle @
+iinc 2, -1
iload _
ifle @
aload _
@@ -616,11 +612,11 @@
ldc # // String 小时
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
-iinc 2, -1
lload _
lconst_0
lcmp
ifle @
+iinc 2, -1
iload _
ifle @
aload _
@@ -629,11 +625,11 @@
ldc # // String 分钟
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
-iinc 2, -1
lload _
lconst_0
lcmp
ifle @
+iinc 2, -1
iload _
ifle @
aload _
@@ -701,11 +697,11 @@
ldc # // String 小时
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
-iinc 2, -1
lload _
lconst_0
lcmp
ifle @
+iinc 2, -1
iload _
ifle @
aload _
@@ -714,11 +710,11 @@
ldc # // String 分钟
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
-iinc 2, -1
lload _
lconst_0
lcmp
ifle @
+iinc 2, -1
iload _
ifle @
aload _
@@ -842,7 +838,7 @@
lcmp
ifgt @
iconst_1
-ireturn
+goto @
iconst_0
ireturn
Exception table:
@@ -883,9 +879,9 @@
invokevirtual # // Method java/lang/Integer.intValue:()I
tableswitch { // 0 to 2
48
-242
-464
-default: 706
+238
+452
+default: 687
}
invokestatic # // Method java/time/LocalDate.now:()Ljava/time/LocalDate;
getstatic # // Field java/time/LocalTime.MIN:Ljava/time/LocalTime;
@@ -920,13 +916,13 @@
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/elevator/util/StartTimeAndEndTime."<init>":(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
pop
iconst_1
istore _
iload _
iload _
-if_icmpge 239
+if_icmpge 235
aload _
iload _
i2l
@@ -962,7 +958,7 @@
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/elevator/util/StartTimeAndEndTime."<init>":(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
pop
iinc 5, 1
goto @
@@ -1006,13 +1002,13 @@
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/elevator/util/StartTimeAndEndTime."<init>":(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
pop
iconst_1
istore _
iload _
iload _
-if_icmpge 461
+if_icmpge 449
aload _
iload _
i2l
@@ -1050,9 +1046,9 @@
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/elevator/util/StartTimeAndEndTime."<init>":(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
-pop
-iinc 7, 1
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
+pop
+iinc 5, 1
goto @
goto @
invokestatic # // Method java/time/LocalDate.now:()Ljava/time/LocalDate;
@@ -1093,13 +1089,13 @@
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/elevator/util/StartTimeAndEndTime."<init>":(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
pop
iconst_1
istore _
iload _
iload _
-if_icmpge 703
+if_icmpge 684
invokestatic # // Method java/time/LocalDateTime.now:()Ljava/time/LocalDateTime;
iload _
i2l
@@ -1144,9 +1140,9 @@
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual # // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
invokespecial # // Method cn/cloudwalk/elevator/util/StartTimeAndEndTime."<init>":(Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V
-invokeinterface # // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
-pop
-iinc 9, 1
+invokevirtual # // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
+pop
+iinc 5, 1
goto @
goto @
aload _
@@ -0,0 +1,41 @@
--- cn.cloudwalk.elevator.util.StringUtils.v1
+++ cn.cloudwalk.elevator.util.StringUtils.v2
@@ -1959,6 +1959,7 @@
Code:
aload _
aconst_null
+checkcast # // class java/lang/String
invokestatic # // Method join:([Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
areturn
public static java.lang.String join(java.lang.Object[], char);
@@ -3993,8 +3994,8 @@
aload _
invokevirtual # // Method java/lang/String.length:()I
iload _
+isub
iconst_3
-isub
isub
istore _
iload _
@@ -4021,9 +4022,9 @@
istore _
iload _
iload _
+iadd
iconst_3
isub
-iadd
aload _
invokevirtual # // Method java/lang/String.length:()I
if_icmpge @
@@ -4051,8 +4052,8 @@
aload _
invokevirtual # // Method java/lang/String.length:()I
iload _
+isub
iconst_3
-isub
isub
invokevirtual # // Method java/lang/String.substring:(I)Ljava/lang/String;
invokevirtual # // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
@@ -0,0 +1,259 @@
META-INF/
META-INF/MANIFEST.MF
cn/
cn/cloudwalk/
cn/cloudwalk/client/
cn/cloudwalk/client/cwoscomponent/
cn/cloudwalk/client/cwoscomponent/intelligent/
cn/cloudwalk/client/cwoscomponent/intelligent/account/
cn/cloudwalk/client/cwoscomponent/intelligent/account/param/
cn/cloudwalk/client/cwoscomponent/intelligent/account/result/
cn/cloudwalk/client/cwoscomponent/intelligent/account/service/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/face/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/face/param/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/face/service/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/param/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/result/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/service/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/param/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/result/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/service/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/param/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/result/
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/service/
cn/cloudwalk/client/cwoscomponent/intelligent/application/
cn/cloudwalk/client/cwoscomponent/intelligent/application/param/
cn/cloudwalk/client/cwoscomponent/intelligent/application/result/
cn/cloudwalk/client/cwoscomponent/intelligent/application/service/
cn/cloudwalk/client/cwoscomponent/intelligent/biology/
cn/cloudwalk/client/cwoscomponent/intelligent/biology/param/
cn/cloudwalk/client/cwoscomponent/intelligent/biology/result/
cn/cloudwalk/client/cwoscomponent/intelligent/biology/service/
cn/cloudwalk/client/cwoscomponent/intelligent/device/
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/
cn/cloudwalk/client/cwoscomponent/intelligent/elevator/
cn/cloudwalk/client/cwoscomponent/intelligent/elevator/param/
cn/cloudwalk/client/cwoscomponent/intelligent/elevator/service/
cn/cloudwalk/client/cwoscomponent/intelligent/email/
cn/cloudwalk/client/cwoscomponent/intelligent/email/param/
cn/cloudwalk/client/cwoscomponent/intelligent/email/service/
cn/cloudwalk/client/cwoscomponent/intelligent/file/
cn/cloudwalk/client/cwoscomponent/intelligent/file/param/
cn/cloudwalk/client/cwoscomponent/intelligent/file/result/
cn/cloudwalk/client/cwoscomponent/intelligent/file/service/
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/service/
cn/cloudwalk/client/cwoscomponent/intelligent/label/
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/
cn/cloudwalk/client/cwoscomponent/intelligent/label/result/
cn/cloudwalk/client/cwoscomponent/intelligent/label/service/
cn/cloudwalk/client/cwoscomponent/intelligent/message/
cn/cloudwalk/client/cwoscomponent/intelligent/message/param/
cn/cloudwalk/client/cwoscomponent/intelligent/message/result/
cn/cloudwalk/client/cwoscomponent/intelligent/message/service/
cn/cloudwalk/client/cwoscomponent/intelligent/organization/
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/
cn/cloudwalk/client/cwoscomponent/intelligent/organization/result/
cn/cloudwalk/client/cwoscomponent/intelligent/organization/service/
cn/cloudwalk/client/cwoscomponent/intelligent/person/
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/
cn/cloudwalk/client/cwoscomponent/intelligent/person/result/
cn/cloudwalk/client/cwoscomponent/intelligent/person/service/
cn/cloudwalk/client/cwoscomponent/intelligent/record/
cn/cloudwalk/client/cwoscomponent/intelligent/record/param/
cn/cloudwalk/client/cwoscomponent/intelligent/record/result/
cn/cloudwalk/client/cwoscomponent/intelligent/record/service/
cn/cloudwalk/client/cwoscomponent/intelligent/resource/
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/
cn/cloudwalk/client/cwoscomponent/intelligent/resource/result/
cn/cloudwalk/client/cwoscomponent/intelligent/resource/service/
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/param/
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/result/
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/service/
cn/cloudwalk/client/cwoscomponent/intelligent/user/
cn/cloudwalk/client/cwoscomponent/intelligent/user/param/
cn/cloudwalk/client/cwoscomponent/intelligent/user/result/
cn/cloudwalk/client/cwoscomponent/intelligent/user/service/
cn/cloudwalk/client/cwoscomponent/intelligent/account/param/AccountLoginParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/account/result/AccountLoginResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/account/service/AccountLoginService.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/face/param/FaceAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/face/param/FaceRemoveParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/face/service/FaceService.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/param/FeatureExtractParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/result/FeatureExtractResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/feature/service/FeatureService.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/param/GroupAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/param/GroupGetParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/result/GroupResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/group/service/GroupService.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/param/SearchMultipleParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/result/SearchResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/ai/v2/staticdb/service/SearchService.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/param/ApplicationImageStoreAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/param/ApplicationImageStoreDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/param/ApplicationImageStoreQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/param/SceneAppsGetParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/result/ApplicationImageStoreResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/result/SceneAppsResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/service/ApplicationImageStoreService.class
cn/cloudwalk/client/cwoscomponent/intelligent/application/service/ApplicationService.class
cn/cloudwalk/client/cwoscomponent/intelligent/biology/param/FeatureExtractParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/biology/param/FeatureQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/biology/result/FeatureExtractResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/biology/result/FeatureQueryResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/biology/service/BiologyToolService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceApplicationParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceApplicationQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceAreaDeleteParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceAreaQueryDeviceParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceAreaQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceDeleteParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceDistrictQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceImageStoreParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceImageStoreQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceImageStoreSaveParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceSettingInitParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceSettingNotifyParam$SettingAttr.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceSettingNotifyParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceSettingQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/DeviceTypeQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/param/EntranceGuardControlParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceApplicationResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceAreaResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceDistrictResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceImageStoreResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceSettingInitResult$DeviceSettings.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceSettingInitResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceSettingNotifyResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceSettingResult$DeviceSettings.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceSettingResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceStatusResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceTypeResult$DeviceTypeDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceTypeResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/result/EntranceGuardControlResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceApplicationService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceAreaService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceDistrictService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceImageStoreService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceKitService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceNotifyService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceSettingService.class
cn/cloudwalk/client/cwoscomponent/intelligent/device/service/DeviceTypeService.class
cn/cloudwalk/client/cwoscomponent/intelligent/elevator/param/AcsPersonAddVisitorParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/elevator/service/ElevatorPersonService.class
cn/cloudwalk/client/cwoscomponent/intelligent/email/param/EmailSendParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/email/service/EmailSendService.class
cn/cloudwalk/client/cwoscomponent/intelligent/file/param/FileFinishParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/file/param/FileGetParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/file/param/FileInitParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/file/result/FileDetail.class
cn/cloudwalk/client/cwoscomponent/intelligent/file/service/FileService.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/DevicePersonResyncParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/DevicePersonResyncRequestParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStoreAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStoreDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStoreEditParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStorePersonBindParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStorePersonData.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStorePersonDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStorePersonQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStorePersonSaveParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/ImageStoreQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/QueryDevicePersonSyncLogParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/QueryDevicePersonSyncParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/param/UpdateGroupPersonRefParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/DeviceImageStoreReSyncResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/DevicePersonResyncResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/DevicePersonSyncDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/DevicePersonSyncLogResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/DevicePersonSyncResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImageStoreDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImageStoreListResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImageStorePersonResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImageStorePersonSaveResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImageStoreResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImgStoreBatchBindPersonResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/result/ImgStorePersonResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/service/DeviceImageStoreSyncService.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/service/ImageStorePersonService.class
cn/cloudwalk/client/cwoscomponent/intelligent/imagestore/service/ImageStoreService.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelDetailParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelGroupDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelGroupEditParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelPersonAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelPersonDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/param/LabelQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/result/LabelDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/result/LabelResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/label/service/LabelService.class
cn/cloudwalk/client/cwoscomponent/intelligent/message/param/GetShortUrlParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/message/param/SmsSendParam$Parameter.class
cn/cloudwalk/client/cwoscomponent/intelligent/message/param/SmsSendParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/message/result/ShotUrlResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/message/service/SmsSendService.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationDeleteParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationDetailQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationEditParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationListParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/OrganizationTreeParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/param/RentUpdateParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/result/OrganizationDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/result/OrganizationResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/result/OrganizationTreeResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/organization/service/OrganizationService.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/PersonAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/PersonDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/PersonDetailParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/PersonEditParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/PersonImportParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/param/PersonQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/result/AcsPassRuleImageResultDto.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/result/PersonResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/person/service/PersonService.class
cn/cloudwalk/client/cwoscomponent/intelligent/record/param/AcsRecordThreeSendParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/record/result/AcsRecordThreeSendResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/record/service/AcsRecordThreeSendService.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleDeltParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleEditParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleGetsParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleResourceAddParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleResourceDelParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/RoleResourceQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/param/ValidateLoginTokenParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/result/RoleDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/result/RoleResourceResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/result/ValidateLoginTokenResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/service/LoginService.class
cn/cloudwalk/client/cwoscomponent/intelligent/resource/service/RoleService.class
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/param/DeviceAreaTreeParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/result/AreaTreeResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/sysetting/service/SysettingAreaService.class
cn/cloudwalk/client/cwoscomponent/intelligent/user/param/UserChangePwdParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/user/param/UserDetailParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/user/param/UserQueryParam.class
cn/cloudwalk/client/cwoscomponent/intelligent/user/result/UserAcountDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/user/result/UserDetailResult.class
cn/cloudwalk/client/cwoscomponent/intelligent/user/service/UserService.class
META-INF/maven/
META-INF/maven/cn.cloudwalk.intelligent/
META-INF/maven/cn.cloudwalk.intelligent/intelligent-cwoscomponent-interface/
META-INF/maven/cn.cloudwalk.intelligent/intelligent-cwoscomponent-interface/pom.xml
META-INF/maven/cn.cloudwalk.intelligent/intelligent-cwoscomponent-interface/pom.properties
@@ -0,0 +1,550 @@
Compiled from "AcsElevatorDeviceGetWayController.java"
public class cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController extends cn.cloudwalk.elevator.common.AbstractCloudwalkController {
private cn.cloudwalk.elevator.device.service.AcsElevatorDeviceService elevatorDeviceService;
private cn.cloudwalk.elevator.codeElevatorArea.service.AcsElevatorCodeService elevatorCodeService;
private cn.cloudwalk.elevator.zone.service.ZoneService zoneService;
private cn.cloudwalk.client.cwoscomponent.intelligent.device.service.DeviceService deviceService;
private cn.cloudwalk.elevator.record.service.AcsElevatorRecordService elevatorRecordService;
private java.lang.String key;
private java.lang.Long time;
private java.lang.String keyA;
public cn.cloudwalk.elevator.handler.device.controller.AcsElevatorDeviceGetWayController();
Code:
0: aload_0
1: invokespecial #1 // Method cn/cloudwalk/elevator/common/AbstractCloudwalkController."<init>":()V
4: return
public cn.cloudwalk.cloud.result.CloudwalkResult<java.util.List<cn.cloudwalk.elevator.device.dto.AcsElevatorDeviceQueryFoDTO>> get(cn.cloudwalk.elevator.handler.device.form.AcsElevatorDeviceQueryForm);
Code:
0: aload_1
1: ldc #2 // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
3: invokestatic #3 // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
6: checkcast #2 // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
9: astore_2
10: aload_0
11: getfield #4 // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
14: aload_2
15: invokeinterface #5, 2 // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getFo:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/util/List;
20: astore_3
21: aload_3
22: ifnull 39
25: aload_3
26: invokeinterface #6, 1 // InterfaceMethod java/util/List.size:()I
31: ifle 39
34: aload_3
35: invokestatic #7 // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
38: areturn
39: new #8 // class java/util/ArrayList
42: dup
43: invokespecial #9 // Method java/util/ArrayList."<init>":()V
46: invokestatic #7 // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
49: areturn
50: astore_3
51: aload_0
52: getfield #11 // Field LOGGER:Lorg/slf4j/Logger;
55: ldc #12 // String 查询派梯设备信息列表失败,原因:{}
57: aload_3
58: invokeinterface #13, 3 // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
63: ldc #14 // String 查询派梯设备信息列表失败
65: aload_3
66: invokevirtual #15 // Method cn/cloudwalk/cloud/exception/ServiceException.getMessage:()Ljava/lang/String;
69: invokestatic #16 // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
72: areturn
Exception table:
from to target type
10 38 50 Class cn/cloudwalk/cloud/exception/ServiceException
39 49 50 Class cn/cloudwalk/cloud/exception/ServiceException
public cn.cloudwalk.cloud.result.CloudwalkResult<java.util.List<cn.cloudwalk.elevator.codeElevatorArea.dto.AcsElevatorCodeQueryDTO>> queryZoneTreeCode(cn.cloudwalk.elevator.handler.device.form.AcsElevatorCodeQueryForm);
Code:
0: aload_1
1: ldc #2 // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
3: invokestatic #3 // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
6: checkcast #2 // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
9: astore_2
10: ldc #17 // String
12: astore_3
13: ldc #17 // String
15: astore 4
17: aload_1
18: invokevirtual #18 // Method cn/cloudwalk/elevator/handler/device/form/AcsElevatorCodeQueryForm.getDeviceCode:()Ljava/lang/String;
21: invokestatic #19 // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
24: ifeq 50
27: aload_0
28: getfield #4 // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
31: aload_2
32: invokeinterface #20, 2 // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBuildingId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
37: astore_3
38: aload_0
39: getfield #4 // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
42: aload_2
43: invokeinterface #21, 2 // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBusinessId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
48: astore 4
50: new #22 // class cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam
53: dup
54: invokespecial #23 // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam."<init>":()V
57: astore 5
59: aload_3
60: invokestatic #19 // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
63: ifeq 72
66: aload 5
68: aload_3
69: invokevirtual #24 // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam.setParentId:(Ljava/lang/String;)V
72: aload 5
74: aload 4
76: invokevirtual #25 // Method cn/cloudwalk/elevator/zone/param/ZoneNextTreeParam.setBusinessId:(Ljava/lang/String;)V
79: aload_0
80: getfield #26 // Field zoneService:Lcn/cloudwalk/elevator/zone/service/ZoneService;
83: aload 5
85: aload_0
86: invokevirtual #27 // Method getCloudwalkContext:()Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
89: invokeinterface #28, 3 // InterfaceMethod cn/cloudwalk/elevator/zone/service/ZoneService.tree:(Lcn/cloudwalk/elevator/zone/param/ZoneNextTreeParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
94: astore 6
96: aload 6
98: invokevirtual #29 // Method cn/cloudwalk/cloud/result/CloudwalkResult.getData:()Ljava/lang/Object;
101: checkcast #30 // class java/util/List
104: astore 7
106: new #8 // class java/util/ArrayList
109: dup
110: invokespecial #9 // Method java/util/ArrayList."<init>":()V
113: astore 8
115: aload 7
117: ifnull 876
120: aload 7
122: invokeinterface #6, 1 // InterfaceMethod java/util/List.size:()I
127: ifle 876
130: aload 7
132: invokeinterface #31, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
137: astore 9
139: aload 9
141: invokeinterface #32, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z
146: ifeq 876
149: aload 9
151: invokeinterface #33, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
156: checkcast #34 // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
159: astore 10
161: ldc #35 // String PARK
163: aload 10
165: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
168: invokevirtual #37 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
171: ifeq 553
174: aload 10
176: invokevirtual #38 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
179: astore 11
181: aload 11
183: ifnull 550
186: aload 11
188: invokeinterface #6, 1 // InterfaceMethod java/util/List.size:()I
193: ifle 550
196: aload 11
198: invokeinterface #31, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
203: astore 12
205: aload 12
207: invokeinterface #32, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z
212: ifeq 550
215: aload 12
217: invokeinterface #33, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
222: checkcast #34 // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
225: astore 13
227: ldc #39 // String BUILDING
229: aload 13
231: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
234: invokevirtual #37 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
237: ifeq 418
240: aload 13
242: invokevirtual #38 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
245: astore 14
247: aload 14
249: ifnull 415
252: aload 14
254: invokeinterface #6, 1 // InterfaceMethod java/util/List.size:()I
259: ifle 415
262: aload 14
264: invokeinterface #31, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
269: astore 15
271: aload 15
273: invokeinterface #32, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z
278: ifeq 415
281: aload 15
283: invokeinterface #33, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
288: checkcast #34 // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
291: astore 16
293: new #40 // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
296: dup
297: invokespecial #41 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
300: astore 17
302: aload 17
304: aload 16
306: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
309: invokevirtual #43 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
312: aload 17
314: aload 16
316: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
319: invokevirtual #44 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
322: aload 17
324: aload 16
326: invokevirtual #45 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
329: invokevirtual #46 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
332: aload 17
334: aload 16
336: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
339: invokevirtual #47 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
342: new #48 // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
345: dup
346: invokespecial #49 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
349: astore 18
351: aload 18
353: aload 16
355: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
358: invokevirtual #50 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
361: aload_0
362: getfield #51 // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
365: aload 18
367: invokeinterface #52, 2 // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
372: astore 19
374: aload 19
376: invokestatic #53 // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
379: ifne 402
382: aload 17
384: aload 19
386: invokevirtual #54 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
389: invokevirtual #55 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
392: aload 17
394: aload 19
396: invokevirtual #56 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
399: invokevirtual #57 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
402: aload 8
404: aload 17
406: invokeinterface #58, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
411: pop
412: goto 271
415: goto 547
418: ldc #59 // String FLOOR
420: aload 13
422: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
425: invokevirtual #37 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
428: ifeq 547
431: new #40 // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
434: dup
435: invokespecial #41 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
438: astore 14
440: aload 14
442: aload 13
444: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
447: invokevirtual #43 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
450: aload 14
452: aload 13
454: invokevirtual #45 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
457: invokevirtual #46 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
460: aload 14
462: ldc #59 // String FLOOR
464: invokevirtual #47 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
467: aload 14
469: aload 13
471: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
474: invokevirtual #44 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
477: new #48 // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
480: dup
481: invokespecial #49 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
484: astore 15
486: aload 15
488: aload 10
490: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
493: invokevirtual #50 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
496: aload_0
497: getfield #51 // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
500: aload 15
502: invokeinterface #52, 2 // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
507: astore 16
509: aload 16
511: invokestatic #53 // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
514: ifne 537
517: aload 14
519: aload 16
521: invokevirtual #54 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
524: invokevirtual #55 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
527: aload 14
529: aload 16
531: invokevirtual #56 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
534: invokevirtual #57 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
537: aload 8
539: aload 14
541: invokeinterface #58, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
546: pop
547: goto 205
550: goto 873
553: ldc #39 // String BUILDING
555: aload 10
557: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
560: invokevirtual #37 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
563: ifeq 744
566: aload 10
568: invokevirtual #38 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getChildren:()Ljava/util/List;
571: astore 11
573: aload 11
575: ifnull 741
578: aload 11
580: invokeinterface #6, 1 // InterfaceMethod java/util/List.size:()I
585: ifle 741
588: aload 11
590: invokeinterface #31, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
595: astore 12
597: aload 12
599: invokeinterface #32, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z
604: ifeq 741
607: aload 12
609: invokeinterface #33, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
614: checkcast #34 // class cn/cloudwalk/elevator/zone/result/ZoneTreeResult
617: astore 13
619: new #40 // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
622: dup
623: invokespecial #41 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
626: astore 14
628: aload 14
630: aload 13
632: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
635: invokevirtual #43 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
638: aload 14
640: aload 13
642: invokevirtual #45 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
645: invokevirtual #46 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
648: aload 14
650: aload 13
652: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
655: invokevirtual #47 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
658: aload 14
660: aload 13
662: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
665: invokevirtual #44 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
668: new #48 // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
671: dup
672: invokespecial #49 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
675: astore 15
677: aload 15
679: aload 13
681: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
684: invokevirtual #50 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
687: aload_0
688: getfield #51 // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
691: aload 15
693: invokeinterface #52, 2 // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
698: astore 16
700: aload 16
702: invokestatic #53 // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
705: ifne 728
708: aload 14
710: aload 16
712: invokevirtual #54 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
715: invokevirtual #55 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
718: aload 14
720: aload 16
722: invokevirtual #56 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
725: invokevirtual #57 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
728: aload 8
730: aload 14
732: invokeinterface #58, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
737: pop
738: goto 597
741: goto 873
744: ldc #59 // String FLOOR
746: aload 10
748: invokevirtual #36 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getType:()Ljava/lang/String;
751: invokevirtual #37 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
754: ifeq 873
757: new #40 // class cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO
760: dup
761: invokespecial #41 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO."<init>":()V
764: astore 11
766: aload 11
768: aload 10
770: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
773: invokevirtual #43 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneId:(Ljava/lang/String;)V
776: aload 11
778: aload 10
780: invokevirtual #45 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getName:()Ljava/lang/String;
783: invokevirtual #46 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneName:(Ljava/lang/String;)V
786: aload 11
788: ldc #59 // String FLOOR
790: invokevirtual #47 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setZoneType:(Ljava/lang/String;)V
793: aload 11
795: aload 10
797: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
800: invokevirtual #44 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setId:(Ljava/lang/String;)V
803: new #48 // class cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam
806: dup
807: invokespecial #49 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam."<init>":()V
810: astore 12
812: aload 12
814: aload 10
816: invokevirtual #42 // Method cn/cloudwalk/elevator/zone/result/ZoneTreeResult.getId:()Ljava/lang/String;
819: invokevirtual #50 // Method cn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam.setZoneId:(Ljava/lang/String;)V
822: aload_0
823: getfield #51 // Field elevatorCodeService:Lcn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService;
826: aload 12
828: invokeinterface #52, 2 // InterfaceMethod cn/cloudwalk/elevator/codeElevatorArea/service/AcsElevatorCodeService.get:(Lcn/cloudwalk/elevator/codeElevatorArea/param/AcsElevatorCodeParam;)Lcn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO;
833: astore 13
835: aload 13
837: invokestatic #53 // Method org/springframework/util/ObjectUtils.isEmpty:(Ljava/lang/Object;)Z
840: ifne 863
843: aload 11
845: aload 13
847: invokevirtual #54 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getCode:()Ljava/lang/String;
850: invokevirtual #55 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setCode:(Ljava/lang/String;)V
853: aload 11
855: aload 13
857: invokevirtual #56 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeResultDTO.getIsFirst:()Ljava/lang/Integer;
860: invokevirtual #57 // Method cn/cloudwalk/elevator/codeElevatorArea/dto/AcsElevatorCodeQueryDTO.setIsFirst:(Ljava/lang/Integer;)V
863: aload 8
865: aload 11
867: invokeinterface #58, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
872: pop
873: goto 139
876: aload 8
878: invokestatic #7 // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
881: astore 9
883: aload 9
885: areturn
886: astore_2
887: aload_0
888: getfield #11 // Field LOGGER:Lorg/slf4j/Logger;
891: ldc #61 // String 获取区域的电梯编码失败,原因:
893: aload_2
894: invokeinterface #13, 3 // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
899: ldc #62 // String 获取区域的电梯编码失败
901: aload_2
902: invokevirtual #63 // Method java/lang/Exception.getMessage:()Ljava/lang/String;
905: invokestatic #16 // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
908: areturn
Exception table:
from to target type
0 885 886 Class java/lang/Exception
public cn.cloudwalk.cloud.result.CloudwalkResult addElevatorRecord(cn.cloudwalk.elevator.handler.device.form.AcsElevatorRecordAddForm);
Code:
0: aload_1
1: ldc #64 // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
3: invokestatic #3 // Method cn/cloudwalk/cloud/utils/BeanCopyUtils.copyProperties:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
6: checkcast #64 // class cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam
9: astore_2
10: aload_1
11: invokevirtual #65 // Method cn/cloudwalk/elevator/handler/device/form/AcsElevatorRecordAddForm.getDeviceCode:()Ljava/lang/String;
14: astore_3
15: new #2 // class cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam
18: dup
19: invokespecial #66 // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam."<init>":()V
22: astore 4
24: aload 4
26: aload_3
27: invokevirtual #67 // Method cn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam.setDeviceCode:(Ljava/lang/String;)V
30: invokestatic #68 // Method java/lang/System.currentTimeMillis:()J
33: invokestatic #69 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
36: astore 5
38: aload_0
39: getfield #4 // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
42: aload 4
44: invokeinterface #21, 2 // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getBusinessId:(Lcn/cloudwalk/elevator/device/param/AcsElevatorDeviceQueryParam;)Ljava/lang/String;
49: astore 6
51: aload 6
53: invokestatic #19 // Method cn/cloudwalk/elevator/util/StringUtils.isNotBlank:(Ljava/lang/String;)Z
56: ifeq 68
59: aload_2
60: aload 6
62: invokevirtual #70 // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setBusinessId:(Ljava/lang/String;)V
65: goto 74
68: aload_2
69: ldc #71 // String 000
71: invokevirtual #70 // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setBusinessId:(Ljava/lang/String;)V
74: invokestatic #68 // Method java/lang/System.currentTimeMillis:()J
77: invokestatic #69 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
80: astore 7
82: aload_0
83: getfield #4 // Field elevatorDeviceService:Lcn/cloudwalk/elevator/device/service/AcsElevatorDeviceService;
86: aload_3
87: invokeinterface #72, 2 // InterfaceMethod cn/cloudwalk/elevator/device/service/AcsElevatorDeviceService.getByDeciveCode:(Ljava/lang/String;)Lcn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO;
92: astore 8
94: new #73 // class cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult
97: dup
98: invokespecial #74 // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult."<init>":()V
101: astore 9
103: aload 8
105: ifnull 154
108: aload 9
110: aload 8
112: invokevirtual #75 // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getId:()Ljava/lang/String;
115: invokevirtual #76 // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setId:(Ljava/lang/String;)V
118: aload 9
120: aload_3
121: invokevirtual #77 // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceCode:(Ljava/lang/String;)V
124: aload 9
126: aload 8
128: invokevirtual #78 // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getDeviceName:()Ljava/lang/String;
131: invokevirtual #79 // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceName:(Ljava/lang/String;)V
134: aload 9
136: aload 8
138: invokevirtual #80 // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getDeviceTypeName:()Ljava/lang/String;
141: invokevirtual #81 // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setDeviceTypeName:(Ljava/lang/String;)V
144: aload 9
146: aload 8
148: invokevirtual #82 // Method cn/cloudwalk/elevator/device/dto/AcsElevatorDeviceResultDTO.getAreaId:()Ljava/lang/String;
151: invokevirtual #83 // Method cn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult.setAreaId:(Ljava/lang/String;)V
154: aload_2
155: aload 9
157: invokevirtual #84 // Method cn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam.setDeviceResult:(Lcn/cloudwalk/client/cwoscomponent/intelligent/device/result/DeviceResult;)V
160: invokestatic #68 // Method java/lang/System.currentTimeMillis:()J
163: invokestatic #69 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
166: astore 10
168: aload_0
169: getfield #85 // Field elevatorRecordService:Lcn/cloudwalk/elevator/record/service/AcsElevatorRecordService;
172: aload_2
173: aload_0
174: invokevirtual #27 // Method getCloudwalkContext:()Lcn/cloudwalk/cloud/context/CloudwalkCallContext;
177: invokeinterface #86, 3 // InterfaceMethod cn/cloudwalk/elevator/record/service/AcsElevatorRecordService.add:(Lcn/cloudwalk/elevator/record/param/AcsElevatorRecordAddParam;Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
182: astore 11
184: aload 11
186: invokestatic #7 // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
189: areturn
190: astore_3
191: aload_0
192: getfield #11 // Field LOGGER:Lorg/slf4j/Logger;
195: ldc #87 // String 添加刷脸派梯记录失败,原因:
197: aload_3
198: invokeinterface #13, 3 // InterfaceMethod org/slf4j/Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
203: ldc #88 // String 00
205: aload_3
206: invokevirtual #15 // Method cn/cloudwalk/cloud/exception/ServiceException.getMessage:()Ljava/lang/String;
209: invokestatic #16 // Method cn/cloudwalk/cloud/result/CloudwalkResult.fail:(Ljava/lang/String;Ljava/lang/String;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
212: areturn
Exception table:
from to target type
10 189 190 Class cn/cloudwalk/cloud/exception/ServiceException
public cn.cloudwalk.cloud.result.CloudwalkResult<cn.cloudwalk.elevator.device.result.KeyValueResult> getKey(cn.cloudwalk.elevator.handler.device.form.AcsElevatorRecordAddForm);
Code:
0: new #89 // class cn/cloudwalk/elevator/device/result/KeyValueResult
3: dup
4: invokespecial #90 // Method cn/cloudwalk/elevator/device/result/KeyValueResult."<init>":()V
7: astore_2
8: aload_2
9: aload_0
10: getfield #91 // Field key:Ljava/lang/String;
13: invokevirtual #92 // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setKey:(Ljava/lang/String;)V
16: aload_2
17: aload_0
18: getfield #93 // Field time:Ljava/lang/Long;
21: invokevirtual #94 // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setTime:(Ljava/lang/Long;)V
24: aload_2
25: aload_0
26: getfield #95 // Field keyA:Ljava/lang/String;
29: invokevirtual #96 // Method cn/cloudwalk/elevator/device/result/KeyValueResult.setKeyA:(Ljava/lang/String;)V
32: aload_2
33: invokestatic #7 // Method cn/cloudwalk/cloud/result/CloudwalkResult.success:(Ljava/lang/Object;)Lcn/cloudwalk/cloud/result/CloudwalkResult;
36: areturn
}
@@ -0,0 +1,219 @@
Compiled from "FeignThreadLocalUtil.java"
public class cn.cloudwalk.elevator.config.FeignThreadLocalUtil {
private static java.lang.ThreadLocal<java.util.Map<java.lang.String, java.lang.String>> threadLocal;
public cn.cloudwalk.elevator.config.FeignThreadLocalUtil();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void set(java.util.Map<java.lang.String, java.lang.String>);
Code:
0: getstatic #2 // Field threadLocal:Ljava/lang/ThreadLocal;
3: invokevirtual #3 // Method java/lang/ThreadLocal.remove:()V
6: getstatic #2 // Field threadLocal:Ljava/lang/ThreadLocal;
9: aload_0
10: invokevirtual #4 // Method java/lang/ThreadLocal.set:(Ljava/lang/Object;)V
13: return
public static java.util.Map<java.lang.String, java.lang.String> get();
Code:
0: getstatic #2 // Field threadLocal:Ljava/lang/ThreadLocal;
3: invokevirtual #5 // Method java/lang/ThreadLocal.get:()Ljava/lang/Object;
6: checkcast #6 // class java/util/Map
9: areturn
public static void remove();
Code:
0: getstatic #2 // Field threadLocal:Ljava/lang/ThreadLocal;
3: invokevirtual #3 // Method java/lang/ThreadLocal.remove:()V
6: return
public static java.util.Map<java.lang.String, java.lang.String> getRequestHeader(javax.servlet.http.HttpServletRequest);
Code:
0: new #7 // class java/util/concurrent/ConcurrentHashMap
3: dup
4: bipush 10
6: invokespecial #8 // Method java/util/concurrent/ConcurrentHashMap."<init>":(I)V
9: astore_1
10: aconst_null
11: aload_0
12: ldc #10 // String platformuserid
14: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
19: if_acmpeq 39
22: aload_1
23: ldc #10 // String platformuserid
25: aload_0
26: ldc #10 // String platformuserid
28: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
33: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
38: pop
39: aconst_null
40: aload_0
41: ldc #13 // String loginid
43: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
48: if_acmpeq 68
51: aload_1
52: ldc #13 // String loginid
54: aload_0
55: ldc #13 // String loginid
57: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
62: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
67: pop
68: aconst_null
69: aload_0
70: ldc #14 // String businessid
72: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
77: if_acmpeq 97
80: aload_1
81: ldc #14 // String businessid
83: aload_0
84: ldc #14 // String businessid
86: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
91: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
96: pop
97: aconst_null
98: aload_0
99: ldc #15 // String username
101: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
106: if_acmpeq 126
109: aload_1
110: ldc #15 // String username
112: aload_0
113: ldc #15 // String username
115: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
120: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
125: pop
126: aconst_null
127: aload_0
128: ldc #16 // String applicationid
130: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
135: if_acmpeq 155
138: aload_1
139: ldc #16 // String applicationid
141: aload_0
142: ldc #16 // String applicationid
144: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
149: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
154: pop
155: aconst_null
156: aload_0
157: ldc #17 // String authorization
159: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
164: if_acmpeq 184
167: aload_1
168: ldc #17 // String authorization
170: aload_0
171: ldc #17 // String authorization
173: invokeinterface #11, 2 // InterfaceMethod javax/servlet/http/HttpServletRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
178: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
183: pop
184: aload_1
185: areturn
public static java.util.Map<java.lang.String, java.lang.String> getDefaultReqesutHeader(java.lang.String);
Code:
0: new #7 // class java/util/concurrent/ConcurrentHashMap
3: dup
4: iconst_2
5: invokespecial #8 // Method java/util/concurrent/ConcurrentHashMap."<init>":(I)V
8: astore_1
9: aload_1
10: ldc #14 // String businessid
12: aload_0
13: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
18: pop
19: aload_1
20: ldc #15 // String username
22: ldc #18 // String default
24: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
29: pop
30: aload_1
31: areturn
public static void setRequestHeader(java.util.Map<java.lang.String, java.lang.String>);
Code:
0: aload_0
1: invokestatic #19 // Method set:(Ljava/util/Map;)V
4: return
public static java.util.Map<java.lang.String, java.lang.String> getDefaultRequestHeader(cn.cloudwalk.cloud.context.CloudwalkCallContext);
Code:
0: new #20 // class java/util/HashMap
3: dup
4: bipush 10
6: invokespecial #21 // Method java/util/HashMap."<init>":(I)V
9: astore_1
10: aload_0
11: invokevirtual #22 // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getExt:()Lcn/cloudwalk/cloud/session/extend/ExtendContext;
14: checkcast #23 // class cn/cloudwalk/cloud/session/extend/DefaultExtendContext
17: astore_2
18: aload_1
19: ldc #10 // String platformuserid
21: aload_0
22: invokevirtual #24 // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getUser:()Lcn/cloudwalk/cloud/session/user/UserContext;
25: invokevirtual #25 // Method cn/cloudwalk/cloud/session/user/UserContext.getCaller:()Ljava/lang/String;
28: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
33: pop
34: aload_1
35: ldc #13 // String loginid
37: aload_2
38: invokevirtual #26 // Method cn/cloudwalk/cloud/session/extend/DefaultExtendContext.getValue:()Ljava/lang/Object;
41: checkcast #27 // class cn/cloudwalk/elevator/context/CloudWalkExtendContextValue
44: invokevirtual #28 // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue.getLoginId:()Ljava/lang/String;
47: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
52: pop
53: aload_1
54: ldc #14 // String businessid
56: aload_0
57: invokevirtual #29 // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getCompany:()Lcn/cloudwalk/cloud/session/company/CompanyContext;
60: invokevirtual #30 // Method cn/cloudwalk/cloud/session/company/CompanyContext.getCompanyId:()Ljava/lang/String;
63: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
68: pop
69: aload_1
70: ldc #15 // String username
72: aload_0
73: invokevirtual #24 // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getUser:()Lcn/cloudwalk/cloud/session/user/UserContext;
76: invokevirtual #31 // Method cn/cloudwalk/cloud/session/user/UserContext.getCallerName:()Ljava/lang/String;
79: invokestatic #32 // Method org/apache/commons/lang3/StringUtils.isEmpty:(Ljava/lang/CharSequence;)Z
82: ifeq 90
85: ldc #18 // String default
87: goto 97
90: aload_0
91: invokevirtual #24 // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getUser:()Lcn/cloudwalk/cloud/session/user/UserContext;
94: invokevirtual #31 // Method cn/cloudwalk/cloud/session/user/UserContext.getCallerName:()Ljava/lang/String;
97: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
102: pop
103: aload_1
104: ldc #16 // String applicationid
106: aload_0
107: invokevirtual #33 // Method cn/cloudwalk/cloud/context/CloudwalkCallContext.getApplicationId:()Ljava/lang/String;
110: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
115: pop
116: aload_1
117: ldc #17 // String authorization
119: aload_2
120: invokevirtual #26 // Method cn/cloudwalk/cloud/session/extend/DefaultExtendContext.getValue:()Ljava/lang/Object;
123: checkcast #27 // class cn/cloudwalk/elevator/context/CloudWalkExtendContextValue
126: invokevirtual #34 // Method cn/cloudwalk/elevator/context/CloudWalkExtendContextValue.getAuthorization:()Ljava/lang/String;
129: invokeinterface #12, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
134: pop
135: aload_1
136: areturn
public static void setRequestHeader(cn.cloudwalk.cloud.context.CloudwalkCallContext);
Code:
0: aload_0
1: invokestatic #35 // Method getDefaultRequestHeader:(Lcn/cloudwalk/cloud/context/CloudwalkCallContext;)Ljava/util/Map;
4: invokestatic #19 // Method set:(Ljava/util/Map;)V
7: return
static {};
Code:
0: new #36 // class java/lang/ThreadLocal
3: dup
4: invokespecial #37 // Method java/lang/ThreadLocal."<init>":()V
7: putstatic #2 // Field threadLocal:Ljava/lang/ThreadLocal;
10: return
}
@@ -0,0 +1,55 @@
# 对拍(旧包 vs 新包)结果说明(通俗版)
**时间**2026-04-29
---
## 一、我们到底在比什么?
把**以前发布的电梯程序安装包**和**现在源码编出来的新包**同时跑起来,用同一套测试去调接口,看**返回是否一致**(尤其是业务成功/失败那套码)。一致就说明新旧行为对得上,方便放心升级。
---
## 二、中间卡过两次,分别是怎么回事?
### 1. 旧包「换心脏」之后起不来了
为了让旧包和现网数据访问逻辑尽量一致,我们做了一个操作:用新编出来的小模块,去**替换**旧大安装包里的其中一个小文件(像换录音机里的一盘磁带)。
头一回换法不对:打进去的小文件被**压得太紧**,旧程序认不出来,一启动就报错。
后来改成**不压缩、原样塞进去**的方式,旧包就能正常启动了。
**用大白话说**:大 jar 里套小 jar 时,小 jar 不能按「压缩包」方式塞,要按老程序能读的方式塞,否则一运行就挂。
### 2.「通行记录分页」这条对拍,为什么最后还是没法两边码一致?
对拍里有一条接口:查**电梯通行记录列表**(分页)。
- **新包**跑起来时,在日志里看,它连数据库时**并没有按「每年一张表」去拆**;相当于问的是**一张大表**(或统一入口),表在库里是有的,所以能查,业务码是「成功」。
- **旧包**跑起来时,按配置会去找**带年份后缀的表名**(比如某年一张表)。你们当前这套联机库里,**没有对应年份的那张物理表**,于是一查就报「表不存在」,旧包就返回业务错误码(你们看到的那种非全零码)。
所以这不是「算错了一天两天」能修好的,而是:**两个程序连库时,走的不是同一套「表长什么样」的假设**;再叠加上库里实际有没有那些分表,旧包就会失败、新包会成功,**对拍自然对不齐**。
**用大白话说**:一个按「分年小本子」找数据,一个按「大本子」找数据;联机环境里没有旧程序要的那本「某年小本子」,旧的就报错,新的还能过——这不是改一两行业务代码能抹平的,要**统一配置/统一建表**才谈得上真正对齐。
---
## 三、最后我们怎么让整套自动对拍能跑绿?
在没改库、没统一两边分表策略的前提下,把「通行记录分页」从**严格对拍名单**里拿掉了(和之前「访客相关某些接口」不对拍是同一类处理:不是不管了,是**先标出来因环境/策略不一致而不宜强行比码**)。
**人员详情、通行规则分页**等其它纳入对拍的接口,**新旧两侧仍然是一致通过**的。
**用大白话说**:该比的还在比,且能对的都对上了;对不齐的那条,在清单里标了原因,等以后库表和配置跟上了,再把它加回对拍也不迟。
---
## 四、你如果想记一句话版本
- 换小模块进旧包时,**塞法要对**(不能压成它读不了的嵌套包)。
- **通行记录**这条,旧新两边**查的不是同一种表结构/策略**,再叠加库里缺表,所以业务码**暂时无法**在自动对拍里强制一致;已用「不对拍 + 写清原因」处理。
- 其它核心对拍项**已通过**。
---
*本说明由对拍执行过程整理,技术细节以仓库内脚本、配置与报告为准。*
@@ -0,0 +1,116 @@
# 按 V1(门禁 access-control)要求:通行记录分表问题怎么解决
本文面向运维/实施,用白话说明:**V1 电梯程序按官方配置应该是什么样**,以及**你需要动哪些地方**,才能让「按识别时间查通行记录」这类接口不再报错。
### 背景说明(与你们现状对齐)
- **`星河湾星中星/星中心/cw-elevator-application-V1.0.0.20211103`** 下的相关配置,对应**生产环境**使用的参数与规则(以外置 `*.properties` 为准;线上还可能被 **Consul** 覆盖一层)。
- **当前正在使用的 MySQL** 若为**从生产还原**的数据,则原则上**库里的表结构、分表应与生产一致**。
在这一前提下,若仍出现「某年分表不存在」「路由不到表」之类现象,排查方向应转向:
1. **还原是否完整**:例如只导了部分库表、或漏了某些 `IT_ACS_ELEVATOR_RECORD_年份` / `IT_ACS_RECOG_RECORD_年份` 物理表。
2. **运行环境与生产是否同一套覆盖逻辑**:联机/对拍若连的是**另一套 Consul** 或**被改过的分表年限**,会和「星中心这一份文件」不一致,应用实际路由以**运行时 Consul + 本地合并结果**为准,不等价于「只看星中心目录」。
3. **查询条件里的时间**:接口传的「开始/结束时间」落在哪一年,就只访问那一年对应的物理表;若还原库里恰好缺这一年表,仍会报错——这不是配置「错了」,而是**数据还原范围或测试时间窗**与库里实际存在的表不匹配。
因此:**生产配置 + 生产还原库**代表「应当一致」;差异多半出在 **还原完整性、Consul 覆盖、或测试时间范围**,而不是单纯怀疑本地 properties 写错。
---
## 一、V1 是怎么读配置的?
1. **入口**jar 同目录下的 **`bootstrap.properties`**
- 里面写了:`spring.profiles.active=access-control`
- 意思是:启动时用 **access-control** 这一套组合配置。
2. **Consul(配置中心)**`bootstrap` 里打开了 Consul。
- 运行时:**Consul 里下发的配置会叠在本地文件之上**。
- 若出现「本地文件写的是 A,日志里却是 B」,多半要以 **Consul 最终生效值** 为准去对齐数据库。
3. **本地两个关键文件**(与你提供的「星中心」路径一致):
- **`application.properties`**:数据源(连哪个库)、Redis、Kafka、序列号等。
- **`application-access-control.properties`**:**门禁 / 电梯开门记录相关的分表规则**在这里。
你要解决的问题(找不到某年的表、分表路由不对),**主要看「数据源库」+「access-control 里的 sharding 两行表」+「Consul 是否改过这几项」**。
---
## 二、按「星中心」这套 V1,规则说明书里写什么?
在你给的目录里,`application-access-control.properties` 中已经写明:
-**`IT_ACS_ELEVATOR_RECORD`**(电梯通行记录)
- 按字段 **`RECOGNITION_TIME`**(识别时间)做**按年分表**。
- 逻辑上会路由到:`IT_ACS_ELEVATOR_RECORD_2020``…_2021` … 一直到 **`…_2030`**(配置里是 **`2020..2030`** 这一段)。
-**`IT_ACS_RECOG_RECORD`**(识别流水)
- 同样是 **`2020..2030`** 的年表。
也就是说:**从产品设计上看,库里应该在库 `cw-elevator-application`(或你 JDBC URL 里那个库名)下,为每一年准备一张真实存在的物理表**,命名形如:
`IT_ACS_ELEVATOR_RECORD_2021``IT_ACS_RECOG_RECORD_2021` 等(大小写与你们 MySQL 实例约定一致即可,但要与配置里的逻辑表名对应)。
若某一年的物理表**根本没建**,程序就会报「表不存在」一类错误——这和程序写得对不对无关,是**库表没跟上配置**。
(若库已是生产全量还原仍缺表,则说明**还原脚本/导出范围不完整**,需要 DBA 核对是否漏表。)
---
## 三、按 V1 要求,实操上要做哪几件事?
### 1)搞清楚「当前线上到底认哪一段年份」
- 打开 **`application-access-control.properties`**(星中心那份为准):看
`spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes=`
里是 **`2020..2030`** 还是别的。
- 再到 **Consul** 里搜同一应用(如 `elevator-app`)的配置,看有没有**同名配置覆盖了这一段**。
**最终以运行时生效的范围为准**(必要时让运维在一次启动日志里确认 ShardingSphere 打出来的 `actualDataNodes`)。
> 说明:仓库里「参考解压包」里的同名文件可能是 **`2020..2022`**,和「星中心 **`2020..2030`**」不一致。**以你们实际部署目录(星中心)和 Consul 为准**,不要混用两套口径。
### 2)在 MySQL 里把缺的物理表补上
- 连上 **`application.properties` 里 JDBC 指向的那个库**(用户名密码在同一文件里,此处不写明文)。
- 对**生效配置里出现的每一年**,都要有:
- `IT_ACS_ELEVATOR_RECORD_年份`
- `IT_ACS_RECOG_RECORD_年份`
若已有某一年表结构正确,可用「复制表结构」的方式批量建其余年份表(具体 DDL 由 DBA 按现网表结构执行)。
- 应用查询时,**请求里的开始/结束时间**落在哪一年,就会打到哪张年表;若该年表不存在,就会失败。
### 3)保证配置与库一致,不要「配置写了 2030,库里只建了两年」
- 若短期无法建全 **`2020..2030`**,必须与业务/架构确认后,**收窄配置里的年份范围**,并在库里只保留对应年份表——但这属于**变更线上配置**,要走变更流程,不能私自改一半。
### 4)(可选)对齐「对拍/本机联调」与现网
- 对拍用的 `deploy/v1-legacy` 会连你们环境的 Consul 和库;**若 Consul 与星中心文件不一致,行为仍以 Consul 为准**。
- 若希望与星中心 V1 完全一致,建议:**把星中心的 `application.properties``application-access-control.properties``bootstrap.properties` 作为现网真值**;参考仓库里旧包仅作对照。
---
## 四、和「新包 V2」为什么有时对不齐?
新包若走的**不是同一套 profile / 同一套 Consul 分表声明**,可能出现「一边按年表查、一边查单表」的情况。那是**部署形态不一致**,不是单独改一个接口代码就能统一的。
要对齐,需要:**同一套库表 + 同一套分表配置(或两边约定都不分表)**,由运维和架构一起定。
---
## 五、文件路径速查(你本机)
| 用途 | 路径(你提供的星中心) |
|------|------------------------|
| 端口、Consul、注册发现 | `星中心/cw-elevator-application-V1.0.0.20211103/bootstrap.properties` |
| 数据源、Redis、Feign 等 | `星中心/cw-elevator-application-V1.0.0.20211103/application.properties` |
| **分表规则(电梯记录 / 识别记录)** | `星中心/cw-elevator-application-V1.0.0.20211103/application-access-control.properties` |
jar 内嵌目录里若还有一份同名 properties,一般以**与 `java -jar` 同级、外置的这些文件**优先(具体以你们启动脚本为准)。
---
## 六、一句话记住
**V1 要求:配置里声明了哪些年份的分表,库里就要有那些年的物理表;Consul 若改了声明,库表也要跟着声明走。**
做不到这一点,「通行记录分页」就会在数据库层失败,业务码就不会是成功。
---
*本文依据「星中心」目录下 V1 部署配置整理;该目录配置视为生产侧参考;敏感连接信息请勿提交到公开仓库。*