mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
fix: relocate cwos-portal decompiled output to correct path; remove nested directory
Former-commit-id: dc30d42a8c55ed8b2382a41dc2434233fbed9930
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# 电梯 HTTP 接口:清单核对、调用一致性、不一致根因
|
||||
|
||||
本文把三件事拆开说明,避免与「对拍脚本 bug」混淆。
|
||||
|
||||
---
|
||||
|
||||
## 一、接口清单核对(「有哪些接口」)
|
||||
|
||||
| 来源 | 产物 / 命令 | 核对内容 |
|
||||
|------|-------------|----------|
|
||||
| **自动化清单** | `api_catalog.json` | 43 条:对拍/冒烟用的 `id`、`method`、`path`、`fixture`/`body`。 |
|
||||
| **代码事实** | `python3 report/build_backend_api_inventory.py --out report/BACKEND-API-INVENTORY.md` | 扫描 `cw-elevator-application-web/**Controller.java`,与 catalog 对照。 |
|
||||
| **结论** | 当前仓库生成结果 | catalog 与 Controller 声明路径 **一致**;额外仅有 **`POST /file/imgupload`**(multipart,未进 JSON catalog)。 |
|
||||
|
||||
清单层面:**V1 与 V2 共用同一套 Controller 源码与同一 catalog**,不存在「V2 少注册了一批路径」这类清单差异。
|
||||
|
||||
---
|
||||
|
||||
## 二、接口调用是否一致(「测试怎么打」)
|
||||
|
||||
对拍/冒烟使用 **同一份** Python 逻辑(`parity/client.py`):
|
||||
|
||||
- **方法**:catalog 中的 `method`(均为 `POST`)。
|
||||
- **路径**:同一 `path` 分别拼在 `--base-old` 与 `--base-new` 后。
|
||||
- **请求体**:同一 `fixture` 或内联 `body`。
|
||||
- **请求头**:`default_headers()`(`Content-Type: application/json` + 环境变量 `ELEVATOR_HEADER_*` 可选)。
|
||||
|
||||
因此:**从测试工具角度,对 V1、V2 的 HTTP 调用是同一套**;若一端返回 Cloudwalk JSON、另一端返回 Spring Boot 500 错误 JSON,属于 **服务端行为差异**,不是「调用了不同接口」。
|
||||
|
||||
---
|
||||
|
||||
## 三、不一致的表现与根因(「为什么 V2 全是 new=None / 500」)
|
||||
|
||||
### 3.1 现象(如何读冒烟 JSON)
|
||||
|
||||
- **V1**:`http_status` 多为 **200**,`response_head` 形如 `{"code":"...", "success":..., ...}` → 能解析顶层 **`code`**(业务码)。
|
||||
- **V2(修复前)**:`http_status` **500**,`response_head` 形如
|
||||
`{"timestamp":...,"status":500,"error":"Internal Server Error","exception":"java.lang.NullPointerException",...}`
|
||||
→ **没有**顶层 `code`,对拍里显示为 **`new=None`**。
|
||||
|
||||
### 3.2 根因(代码链)
|
||||
|
||||
1. `AbstractCloudwalkController.getCloudwalkContext()` 调用
|
||||
`CloudwalkCallContextBuilder.buildContext(cloudwalkSessionContextHolder)`。
|
||||
2. `CloudwalkCallContextBuilder` 第一行:
|
||||
`CloudwalkSessionObject session = sessionContextHolder.getSession();`
|
||||
接着 **`session.getUser()`** 等;若 **`session == null` → NPE**。
|
||||
3. `CloudwalkSessionContextHolder` 使用 **ThreadLocal**;会话对象由 **`CloudwalkContextParameterFilter`**(包 `cn.cloudwalk.web.filter`)在 **`doFilterInternal`** 里 **`putSession(sessionObject)`** 写入。
|
||||
4. **Maven V2 启动类**原先 **未扫描** `cn.cloudwalk.web.filter`,过滤器 **未注册** → 请求线程从未 `putSession` → **`getSession()` 恒为 null** → **所有依赖 `getCloudwalkContext()` 的接口统一 NPE**。
|
||||
|
||||
这与「接口清单不一致」无关,是 **运行时上下文未初始化**。
|
||||
|
||||
### 3.3 修复(应用侧)
|
||||
|
||||
在 `ElevatorApplication` 的 `scanBasePackages` 中增加 **`cn.cloudwalk.web.filter`**,使 `CloudwalkContextParameterFilter` 成为 Spring Bean 并参与 Filter 链。
|
||||
|
||||
**注意**:不要整包扫描 `cn.cloudwalk.web`(会带入 `LocaleConfiguration` 再声明一个 `CloudwalkSessionContextHolder` Bean,与 `CloudwalkSessionHolderConfiguration` 冲突);只扫描 **`cn.cloudwalk.web.filter`** 即可。
|
||||
|
||||
修复后应重新构建 V2 JAR,再跑:
|
||||
|
||||
```bash
|
||||
./scripts/run_full_elevator_api_suite.sh
|
||||
```
|
||||
|
||||
预期:V2 的 `http_status` 回到与 V1 同类的业务响应(多为 200 + Cloudwalk `code`),对拍 **`new=None`** 应消失或仅剩真实业务差异。
|
||||
|
||||
---
|
||||
|
||||
## 四、核对清单速查表
|
||||
|
||||
| 步骤 | 做什么 |
|
||||
|------|--------|
|
||||
| 0 | **V1/V2 电梯业务源码比对**(仅白名单文件、忽略空白):`docs/architecture/V1-V2-电梯API源码比对白名单.md`;**依赖比对**(`lib`/`cw_lib` vs 反应堆):`docs/architecture/V1-V2-电梯依赖比对.md`。 |
|
||||
| 1 | 跑 `build_backend_api_inventory.py`,打开 `BACKEND-API-INVENTORY.md`,确认 **§3 无遗漏 path**。 |
|
||||
| 2 | 跑全量冒烟,打开 `smoke-v1_*.json` / `smoke-v2_*.json`,逐条对比 **`http_status` + `response_head` 前缀**(是否均为 `{"code":`)。 |
|
||||
| 3 | 若 V2 仍为 500,在 **V2 日志**中搜 `NullPointerException` 与具体 `path`,确认是否还有 **其它** 未注册的 Filter/Interceptor。 |
|
||||
|
||||
---
|
||||
|
||||
*文档与 `ElevatorApplication` 扫描修复同步维护。*
|
||||
@@ -7,6 +7,7 @@
|
||||
| **单机冒烟** | 对单个 Base URL 遍历 `api_catalog.json` 中的接口(`include_in_smoke=true`),记录 HTTP 状态、耗时、业务 `code`、响应摘要 → `report/smoke-{label}-*.md` |
|
||||
| **横向对拍** | 旧 JAR(`--base-old`)与新 JAR(`--base-new`)并行调用;仅 **`include_in_parity=true`** 的条目参与 **HTTP 状态 + 业务 code** 一致性断言 → `report/parity-*.md` |
|
||||
| **套件总览** | 合并本次产生的冒烟×2 + 对拍 → `report/SUITE-*.md` |
|
||||
| **源码级比对(V1 jar → CFR)** | 见 `../../scripts/decompile_v1_elevator_jars.sh` 将 `cw_lib` 四模块 jar 反编译至 `tools/v1-decompiled/`,再运行 `scripts/source_parity_scan.py` → `report/SOURCE-PARITY-BY-CLASS-decomp.md` |
|
||||
|
||||
接口清单与请求体见 **`api_catalog.json`**(支持 `fixture` 文件或内联 `body`)。
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"description": "电梯应用 HTTP 接口清单:冒烟与对拍共用。include_in_parity=false 的项仅做单机路由/业务响应探测,不参与 V1/V2 等值断言。",
|
||||
"description": "电梯应用 HTTP 接口清单:冒烟与对拍共用。include_in_parity=false 的项仅做单机路由/业务响应探测,不参与 V1/V2 等值断言。租户访客楼层策略(V2 Maven 独有 TenantVisitorFloorPolicy*)影响 POST /elevator/person/add/visitor;record/page 受 V1 legacy(access-control)与 V2(ElevatorApplication)在 Consul 的分片规则是否生效差异影响(见该条 parity_exclude_reason),亦不做 code 等值断言。可选 boundary_patches:在基线 fixture/body 上深度合并 patch,需环境变量 ELEVATOR_PARITY_BOUNDARY=1 时与基线 default 一并参与对拍。",
|
||||
"endpoints": [
|
||||
{
|
||||
"id": "person_add_visitor_min",
|
||||
@@ -9,8 +9,9 @@
|
||||
"path": "/elevator/person/add/visitor",
|
||||
"fixture": "person_add_visitor_min.json",
|
||||
"compare_mode": "code_only",
|
||||
"include_in_parity": true,
|
||||
"include_in_smoke": true
|
||||
"include_in_parity": false,
|
||||
"include_in_smoke": true,
|
||||
"parity_exclude_reason": "租户访客楼层策略为 V2 扩展,与 V1.20211103 不做 code 等值断言"
|
||||
},
|
||||
{
|
||||
"id": "person_detail",
|
||||
@@ -20,7 +21,12 @@
|
||||
"fixture": "person_detail_min.json",
|
||||
"compare_mode": "code_only",
|
||||
"include_in_parity": true,
|
||||
"include_in_smoke": true
|
||||
"include_in_smoke": true,
|
||||
"boundary_patches": [
|
||||
{ "id": "rows_zero", "description": "每页行数为 0", "patch": { "rowsOfPage": 0 } },
|
||||
{ "id": "page_zero", "description": "当前页为 0", "patch": { "currentPage": 0 } },
|
||||
{ "id": "large_page", "description": "极大页码与大页长", "patch": { "currentPage": 999999, "rowsOfPage": 200 } }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "passrule_page",
|
||||
@@ -30,7 +36,12 @@
|
||||
"fixture": "passrule_page.json",
|
||||
"compare_mode": "code_only",
|
||||
"include_in_parity": true,
|
||||
"include_in_smoke": true
|
||||
"include_in_smoke": true,
|
||||
"boundary_patches": [
|
||||
{ "id": "page_no_zero", "description": "页码为 0", "patch": { "pageNo": 0 } },
|
||||
{ "id": "page_size_zero", "description": "页大小为 0", "patch": { "pageSize": 0 } },
|
||||
{ "id": "large_page", "description": "极大页码与页大小", "patch": { "pageNo": 999999, "pageSize": 500 } }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "record_page",
|
||||
@@ -39,8 +50,22 @@
|
||||
"path": "/intelligent/acs/elevator/record/page",
|
||||
"fixture": "record_page.json",
|
||||
"compare_mode": "code_only",
|
||||
"include_in_parity": true,
|
||||
"include_in_smoke": true
|
||||
"include_in_parity": false,
|
||||
"parity_exclude_reason": "V1 legacy 入口启用 Consul 分表(actualDataNodes 年后缀),联机库未必存在 IT_ACS_ELEVATOR_RECORD_YYYY 物理表;V2 当前启动日志中 Sharding 无 tables 仅 defaultDataSource,走单表逻辑。二者命中不同物理表/路由,业务码无法与「同库同规则」前提对齐。",
|
||||
"include_in_smoke": true,
|
||||
"boundary_patches": [
|
||||
{ "id": "rows_zero", "description": "每页行数为 0", "patch": { "rowsOfPage": 0 } },
|
||||
{
|
||||
"id": "time_equal",
|
||||
"description": "起止时间相等",
|
||||
"patch": { "startTime": 1625068800000, "endTime": 1625068800000 }
|
||||
},
|
||||
{
|
||||
"id": "time_inverted",
|
||||
"description": "结束早于开始",
|
||||
"patch": { "startTime": 1625155200000, "endTime": 1625068800000 }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "person_add",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"currentPage": 1,
|
||||
"rowsOfPage": 1,
|
||||
"startTime": 1,
|
||||
"endTime": 2
|
||||
"startTime": 1625068800000,
|
||||
"endTime": 1625155199999
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
"""
|
||||
在基线请求体上叠加 boundary_patches,用于双端对拍的入参边界/范围扩展。
|
||||
|
||||
catalog 中可选字段(仅当开启 ELEVATOR_PARITY_BOUNDARY=1 时展开)::
|
||||
|
||||
"boundary_patches": [
|
||||
{ "id": "rows_zero", "description": "可选说明", "patch": { "rowsOfPage": 0 } }
|
||||
]
|
||||
|
||||
patch 与基线 JSON **深度合并**(字典递归;非 dict 叶子由 patch 覆盖)。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import copy
|
||||
import os
|
||||
from typing import Any, Dict, Iterator, List, Tuple
|
||||
|
||||
from parity.catalog_loader import endpoint_body
|
||||
|
||||
|
||||
def deep_merge(base: Any, patch: Any) -> Any:
|
||||
"""深度合并:patch 覆盖 base;两 dict 则递归。"""
|
||||
if not isinstance(base, dict) or not isinstance(patch, dict):
|
||||
return copy.deepcopy(patch)
|
||||
out = copy.deepcopy(base)
|
||||
for k, v in patch.items():
|
||||
if k in out and isinstance(out[k], dict) and isinstance(v, dict):
|
||||
out[k] = deep_merge(out[k], v)
|
||||
else:
|
||||
out[k] = copy.deepcopy(v)
|
||||
return out
|
||||
|
||||
|
||||
def boundary_enabled() -> bool:
|
||||
return os.environ.get("ELEVATOR_PARITY_BOUNDARY", "0").strip() == "1"
|
||||
|
||||
|
||||
def iter_parity_request_cases(ep: Dict[str, Any]) -> Iterator[Tuple[str, Dict[str, Any]]]:
|
||||
"""
|
||||
生成 (case_id, body)。首条恒为 (\"default\", 基线体)。
|
||||
boundary 开启且条目含 boundary_patches 时,追加合并后的变体。
|
||||
"""
|
||||
base = endpoint_body(ep)
|
||||
yield "default", base
|
||||
|
||||
if not boundary_enabled():
|
||||
return
|
||||
|
||||
patches: List[Dict[str, Any]] = ep.get("boundary_patches") or []
|
||||
if not patches:
|
||||
return
|
||||
|
||||
for bp in patches:
|
||||
cid = str(bp.get("id") or bp.get("label") or "variant").strip()
|
||||
if not cid:
|
||||
cid = "variant"
|
||||
patch = bp.get("patch")
|
||||
if patch is None or not isinstance(patch, dict):
|
||||
continue
|
||||
merged = deep_merge(base, patch)
|
||||
if not isinstance(merged, dict):
|
||||
merged = {}
|
||||
yield cid, merged
|
||||
+125
@@ -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 契约,须与「接口不变」约定一并评审。
|
||||
+1250
File diff suppressed because it is too large
Load Diff
+65
@@ -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**:FileController(multipart/form-data,未纳入 JSON 冒烟)
|
||||
+192
@@ -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`)
|
||||
|
||||
**V1(CFR)呈现的语义**
|
||||
`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 (约 102–104 行)
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
```
|
||||
|
||||
```properties
|
||||
# maven-cw-elevator-application/deploy/v2-maven/application.properties (约 108–110 行)
|
||||
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`(区域树 + 电梯码)
|
||||
|
||||
**V1(CFR)呈现的语义**
|
||||
树遍历后对多个节点分别构造 `AcsElevatorCodeParam` 并调用 `elevatorCodeService.get(...)`(逐次查询)。
|
||||
|
||||
**V2(Maven)呈现的语义**
|
||||
收集 zoneId 集合后 `mapByZoneIds`,再用 `ZoneTreeCollectors` 等与树组装。
|
||||
|
||||
**结论(还原度 vs 归因)**
|
||||
|
||||
|
||||
| 对象 | 结论 |
|
||||
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| **CFR 对 jar 内 39202 逻辑的还原** | 若解压的 `cw-elevator-application-web` class 与之同构(循环 + 多次 `get`),则 **对该历史 jar,CFR 还原度高**;这是在描述「字节码长什么样」,不是优劣判断。 |
|
||||
| **V1 CFR 与 V2 源码文本差异大** | 归因:**Maven 源码已对取码路径做重构(批量 + 工具类)**,属于 **源码演进**,≠ CFR 不可靠。若要 100% 封口,可对 **20211103 jar** 内对应 `*.class` 做一次 `javap -c` 与 CFR 提纲对照(建议纳入后续工件)。 |
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 2.3 `FeignThreadLocalUtil`(`cw-elevator-application-common`)
|
||||
|
||||
**V1(CFR)**
|
||||
包含 `set`/`get`/`remove`、`getRequestHeader`、`getDefaultReqesutHeader`(拼写保持 CFR 输出)、`getDefaultRequestHeader(CloudwalkCallContext)`、`setRequestHeader(...)`;**未发现** `callWithContext`。
|
||||
|
||||
**V2(Maven)**
|
||||
在如上之外 **新增** `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 侧若不同,优先记为 **源码相对历史字节码的变更**,需另表跟踪,而非用「合理性」替代还原度证据链。
|
||||
|
||||
+214
@@ -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`
|
||||
目的:按“空数据即成功(空列表)”的语义返回,由数据质量和分表策略保证可用性,而不是将空结果映射为失败码。
|
||||
|
||||
如后续确认“目标语义应为成功空列表”,可在生产配置关闭该开关,并同步更新对拍基线预期。
|
||||
+687
@@ -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();
|
||||
+ }
|
||||
}
|
||||
}
|
||||
-
|
||||
+123
@@ -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.85–0.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**
|
||||
+102
@@ -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.85–0.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**
|
||||
+70
@@ -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` + 同依赖树构建产物。
|
||||
- **不可单独验收**:未升级的传递依赖字节码与生产全网运行时逐条等价。
|
||||
|
||||
+112
@@ -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.85–0.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
|
||||
```
|
||||
|
||||
+39
@@ -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。
|
||||
+136
@@ -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` 核对),而不是仅改兄弟仓库未发布的源码。 |
|
||||
|
||||
|
||||
+134
@@ -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_DIFF(13 个)**
|
||||
- 每类做三方对照:`V1 class(javap)` vs `V1 CFR/JD源码` vs `V2源码`。
|
||||
- 目标:判定“JD-GUI 误还原”还是“有意改写”。
|
||||
|
||||
3. **再处理 API_DIFF(48 个)**
|
||||
- 按风险分层: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 一致(或明确保留差异)。
|
||||
+144
@@ -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", "FileController(multipart/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()
|
||||
+223
@@ -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
|
||||
+14
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
+26
@@ -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
|
||||
+134
@@ -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
|
||||
}
|
||||
+144
@@ -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
|
||||
}
|
||||
+11
@@ -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;
|
||||
+66
@@ -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
|
||||
}
|
||||
+66
@@ -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
|
||||
}
|
||||
+14
@@ -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
|
||||
+46
@@ -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
|
||||
}
|
||||
+51
@@ -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
|
||||
}
|
||||
+269
@@ -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
|
||||
+2870
File diff suppressed because it is too large
Load Diff
+2870
File diff suppressed because it is too large
Load Diff
+20
@@ -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
|
||||
+139
@@ -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
|
||||
}
|
||||
+139
@@ -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
|
||||
}
|
||||
+330
@@ -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
|
||||
+1635
File diff suppressed because it is too large
Load Diff
+1630
File diff suppressed because it is too large
Load Diff
+45
@@ -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
|
||||
+196
@@ -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
|
||||
}
|
||||
+195
@@ -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
|
||||
}
|
||||
+18
@@ -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;
|
||||
+198
@@ -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
|
||||
}
|
||||
+198
@@ -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
|
||||
}
|
||||
+68
@@ -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;
|
||||
+537
@@ -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
|
||||
}
|
||||
+537
@@ -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
|
||||
}
|
||||
+14
@@ -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
|
||||
+79
@@ -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
|
||||
}
|
||||
+79
@@ -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
|
||||
}
|
||||
+22
@@ -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
|
||||
+318
@@ -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
|
||||
}
|
||||
+318
@@ -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
|
||||
}
|
||||
+218
@@ -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 _
|
||||
+1175
File diff suppressed because it is too large
Load Diff
+1171
File diff suppressed because it is too large
Load Diff
+41
@@ -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;
|
||||
+4353
File diff suppressed because it is too large
Load Diff
+4354
File diff suppressed because it is too large
Load Diff
+259
@@ -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
|
||||
+550
@@ -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
|
||||
}
|
||||
+1337
File diff suppressed because it is too large
Load Diff
+219
@@ -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 部署配置整理;该目录配置视为生产侧参考;敏感连接信息请勿提交到公开仓库。*
|
||||
+196
@@ -0,0 +1,196 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
生成“贴合源码”的反编译代码树:
|
||||
|
||||
- 以 V1 CFR 反编译目录为骨架;
|
||||
- 若同路径在 V2 Maven 源码存在,则用 V2 源码覆盖该文件;
|
||||
- 若 V2 不存在,则保留 V1 CFR 文件;
|
||||
- 同时补充 V2 独有文件(V1 中无)。
|
||||
|
||||
输出:
|
||||
1) 对齐后的代码目录(默认 tools/v1-decompiled/source-aligned-<timestamp>)
|
||||
2) current 软链(source-aligned-current)
|
||||
3) 构建报告(同目录 BUILD-REPORT.md / BUILD-REPORT.json)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
SCR = Path(__file__).resolve()
|
||||
MV_ROOT = Path(os.environ.get("MV_ROOT", SCR.parents[3])).resolve()
|
||||
DEFAULT_V1 = (MV_ROOT / "tools" / "v1-decompiled" / "cfr-from-cw-lib-current").resolve()
|
||||
|
||||
PAIR = [
|
||||
("cw-elevator-application-common", "cw-elevator-application-common-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-data", "cw-elevator-application-data-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-service", "cw-elevator-application-service-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-web", "cw-elevator-application-web-1.0-SNAPSHOT"),
|
||||
]
|
||||
|
||||
|
||||
def copy_file(src: Path, dst: Path) -> None:
|
||||
dst.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copy2(src, dst)
|
||||
|
||||
|
||||
def rel_java_map(root: Path) -> dict[str, Path]:
|
||||
return {str(p.relative_to(root)).replace("\\", "/"): p for p in root.rglob("*.java")}
|
||||
|
||||
|
||||
def build(v1_root: Path, out_root: Path) -> dict:
|
||||
stats = {
|
||||
"v1_only_kept": 0,
|
||||
"v2_replaced": 0,
|
||||
"v2_only_added": 0,
|
||||
"total_output_java": 0,
|
||||
"modules": {},
|
||||
}
|
||||
details: list[dict] = []
|
||||
|
||||
for mod_mv, mod_v1 in PAIR:
|
||||
v1_mod_root = v1_root / mod_v1
|
||||
mv_mod_root = MV_ROOT / mod_mv / "src" / "main" / "java"
|
||||
out_mod_root = out_root / mod_v1
|
||||
|
||||
v1_java = rel_java_map(v1_mod_root) if v1_mod_root.is_dir() else {}
|
||||
mv_java = rel_java_map(mv_mod_root) if mv_mod_root.is_dir() else {}
|
||||
|
||||
mod_stat = {"v1_only_kept": 0, "v2_replaced": 0, "v2_only_added": 0, "output_java": 0}
|
||||
|
||||
all_rels = sorted(set(v1_java) | set(mv_java))
|
||||
for rel in all_rels:
|
||||
p_v1 = v1_java.get(rel)
|
||||
p_v2 = mv_java.get(rel)
|
||||
out_file = out_mod_root / rel
|
||||
|
||||
if p_v1 and p_v2:
|
||||
copy_file(p_v2, out_file)
|
||||
src = "V2_REPLACED"
|
||||
stats["v2_replaced"] += 1
|
||||
mod_stat["v2_replaced"] += 1
|
||||
elif p_v1:
|
||||
copy_file(p_v1, out_file)
|
||||
src = "V1_ONLY_KEPT"
|
||||
stats["v1_only_kept"] += 1
|
||||
mod_stat["v1_only_kept"] += 1
|
||||
else:
|
||||
copy_file(p_v2, out_file)
|
||||
src = "V2_ONLY_ADDED"
|
||||
stats["v2_only_added"] += 1
|
||||
mod_stat["v2_only_added"] += 1
|
||||
|
||||
stats["total_output_java"] += 1
|
||||
mod_stat["output_java"] += 1
|
||||
details.append(
|
||||
{
|
||||
"module_v1_dir": mod_v1,
|
||||
"module_maven": mod_mv,
|
||||
"relative_path": rel,
|
||||
"source_kind": src,
|
||||
"v1_file": str(p_v1) if p_v1 else None,
|
||||
"v2_file": str(p_v2) if p_v2 else None,
|
||||
"output_file": str(out_file),
|
||||
}
|
||||
)
|
||||
|
||||
stats["modules"][mod_mv] = mod_stat
|
||||
|
||||
return {"stats": stats, "details": details}
|
||||
|
||||
|
||||
def write_report(out_root: Path, payload: dict, v1_root: Path) -> None:
|
||||
report_json = out_root / "BUILD-REPORT.json"
|
||||
report_md = out_root / "BUILD-REPORT.md"
|
||||
report_json.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
|
||||
s = payload["stats"]
|
||||
lines = [
|
||||
"# Source-Aligned Decompiled Build Report",
|
||||
"",
|
||||
f"- UTC: `{datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')}`",
|
||||
f"- V1 base: `{v1_root}`",
|
||||
f"- Maven root: `{MV_ROOT}`",
|
||||
"",
|
||||
"## Summary",
|
||||
"",
|
||||
"| metric | count |",
|
||||
"|---|---:|",
|
||||
f"| v2_replaced | {s['v2_replaced']} |",
|
||||
f"| v1_only_kept | {s['v1_only_kept']} |",
|
||||
f"| v2_only_added | {s['v2_only_added']} |",
|
||||
f"| total_output_java | {s['total_output_java']} |",
|
||||
"",
|
||||
"## Module stats",
|
||||
"",
|
||||
"| module | v2_replaced | v1_only_kept | v2_only_added | output_java |",
|
||||
"|---|---:|---:|---:|---:|",
|
||||
]
|
||||
for m, ms in s["modules"].items():
|
||||
lines.append(
|
||||
f"| {m} | {ms['v2_replaced']} | {ms['v1_only_kept']} | {ms['v2_only_added']} | {ms['output_java']} |"
|
||||
)
|
||||
lines.append("")
|
||||
lines.append("## Notes")
|
||||
lines.append("")
|
||||
lines.append("- 该目录可视作“源码优先的反编译校正版”:同路径优先采用 Maven 源码。")
|
||||
lines.append("- 若你要严格保留历史 jar 语义,请结合 `details` 过滤 `V2_REPLACED`/`V2_ONLY_ADDED`。")
|
||||
report_md.write_text("\n".join(lines), encoding="utf-8")
|
||||
|
||||
|
||||
def update_current_link(base_dir: Path, target: Path, link_name: str) -> Path:
|
||||
link = base_dir / link_name
|
||||
if link.exists() or link.is_symlink():
|
||||
link.unlink()
|
||||
link.symlink_to(target.name)
|
||||
return link
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--v1-root", default=str(DEFAULT_V1), help="V1 CFR 根目录")
|
||||
ap.add_argument("--out-dir", default="", help="输出目录;默认自动生成时间戳目录")
|
||||
ap.add_argument(
|
||||
"--no-current-link",
|
||||
action="store_true",
|
||||
help="不更新 source-aligned-current 软链",
|
||||
)
|
||||
args = ap.parse_args()
|
||||
|
||||
v1_root = Path(args.v1_root).resolve()
|
||||
if not v1_root.is_dir():
|
||||
raise SystemExit(f"V1 root missing: {v1_root}")
|
||||
|
||||
base_dir = (MV_ROOT / "tools" / "v1-decompiled").resolve()
|
||||
base_dir.mkdir(parents=True, exist_ok=True)
|
||||
if args.out_dir:
|
||||
out_root = Path(args.out_dir).resolve()
|
||||
else:
|
||||
ts = datetime.now().strftime("%Y%m%d-%H%M%S")
|
||||
out_root = base_dir / f"source-aligned-{ts}"
|
||||
out_root.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
payload = build(v1_root=v1_root, out_root=out_root)
|
||||
write_report(out_root=out_root, payload=payload, v1_root=v1_root)
|
||||
|
||||
if not args.no_current_link:
|
||||
update_current_link(base_dir=base_dir, target=out_root, link_name="source-aligned-current")
|
||||
|
||||
print(f"OK: {out_root}")
|
||||
print(
|
||||
"SUMMARY:"
|
||||
f" replaced={payload['stats']['v2_replaced']}"
|
||||
f" kept_v1={payload['stats']['v1_only_kept']}"
|
||||
f" added_v2={payload['stats']['v2_only_added']}"
|
||||
f" total={payload['stats']['total_output_java']}"
|
||||
)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
javap -c 文本在「行级归一」之后的二次归一:折叠布局等价序列、依赖升级导致的等价 API 形态。
|
||||
供 bytecode_parity_rootcause / export_impl_diff_evidence 共用。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
|
||||
|
||||
def _collapse_double_goto(result: str) -> str:
|
||||
while True:
|
||||
n2 = re.sub(r"(?m)^goto @\n^goto @\n", "goto @\n", result)
|
||||
if n2 == result:
|
||||
break
|
||||
result = n2
|
||||
return result
|
||||
|
||||
|
||||
def norm_code_post(result: str) -> str:
|
||||
"""
|
||||
入参:已由 norm_code 行处理拼接的字符串(不以 \\n 结尾亦可)。
|
||||
"""
|
||||
# --- 1) 条件 + 紧跟 goto @(蹦床):折叠为反条件单指令,对齐 javac 两种发射形态 ---
|
||||
branch_pairs = [
|
||||
(r"(?m)^ifnonnull @\n^goto @\n", "ifnull @\n"),
|
||||
(r"(?m)^if_icmpne @\n^goto @\n", "if_icmpeq @\n"),
|
||||
(r"(?m)^ifne @\n^goto @\n", "ifeq @\n"),
|
||||
(r"(?m)^if_icmpeq @\n^goto @\n", "if_icmpne @\n"),
|
||||
]
|
||||
for pat, repl in branch_pairs:
|
||||
result = re.sub(pat, repl, result)
|
||||
|
||||
result = _collapse_double_goto(result)
|
||||
|
||||
# --- 2) 连续完全相同的 checkcast(冗余校验)---
|
||||
lines = result.splitlines()
|
||||
out: list[str] = []
|
||||
for ln in lines:
|
||||
if out and ln == out[-1] and "checkcast" in ln:
|
||||
continue
|
||||
out.append(ln)
|
||||
result = "\n".join(out)
|
||||
|
||||
# --- 3) String.join 前对 null 入参的 checkcast(仅一版 javac 发射)---
|
||||
result = re.sub(
|
||||
r"(?m)^aconst_null\n"
|
||||
r"^checkcast # // class java/lang/String\n"
|
||||
r"^(invokestatic # // Method java/lang/String\.join:\(\[Ljava/lang/Object;Ljava/lang/String;\)Ljava/lang/String;)\s*$",
|
||||
r"aconst_null\n\1",
|
||||
result,
|
||||
)
|
||||
result = re.sub(
|
||||
r"(?m)^aload _\n"
|
||||
r"^aconst_null\n"
|
||||
r"^checkcast # // class java/lang/String\n"
|
||||
r"^(invokestatic # // Method java/lang/String\.join:\(\[Ljava/lang/Object;Ljava/lang/String;\)Ljava/lang/String;)\s*$",
|
||||
r"aload _\naconst_null\n\1",
|
||||
result,
|
||||
)
|
||||
|
||||
# --- 3b) iconst_0 初始化两个局部:dup/istore 与 istore/iload 轮换等价 ---
|
||||
result = re.sub(
|
||||
r"(?m)^iconst_0\n^dup\n^istore _\n^dup\n^istore _\n",
|
||||
"iconst_0\n__local01_from_dup__\n",
|
||||
result,
|
||||
)
|
||||
result = re.sub(
|
||||
r"(?m)^iconst_0\n^istore _\n^iload _\n^istore _\n^iload _\n",
|
||||
"iconst_0\n__local01_from_dup__\n",
|
||||
result,
|
||||
)
|
||||
|
||||
# --- 4) Apache POI:旧 int API / 新 CellType·IndexedColors API 等价 ---
|
||||
poi_tokens = [
|
||||
(
|
||||
r"(?m)^iconst_1\n^invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Cell\.setCellType:\(I\)V\s*$",
|
||||
"__poi_Cell_setCellType_STRING__",
|
||||
),
|
||||
(
|
||||
r"(?m)^getstatic # // Field org/apache/poi/ss/usermodel/CellType\.STRING:.+\n"
|
||||
r"^invokeinterface # // InterfaceMethod org/apache/poi/ss/usermodel/Cell\.setCellType:\(Lorg/apache/poi/ss/usermodel/CellType;\)V\s*$",
|
||||
"__poi_Cell_setCellType_STRING__",
|
||||
),
|
||||
(
|
||||
r"(?m)^iconst_1\n^invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFCell\.setCellType:\(I\)V\s*$",
|
||||
"__poi_HSSFCell_setCellType_STRING__",
|
||||
),
|
||||
(
|
||||
r"(?m)^getstatic # // Field org/apache/poi/ss/usermodel/CellType\.STRING:.+\n"
|
||||
r"^invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFCell\.setCellType:\(Lorg/apache/poi/ss/usermodel/CellType;\)V\s*$",
|
||||
"__poi_HSSFCell_setCellType_STRING__",
|
||||
),
|
||||
(
|
||||
r"(?m)^sipush 700\n^invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont\.setBoldweight:\(S\)V\s*$",
|
||||
"__poi_HSSFFont_bold__",
|
||||
),
|
||||
(
|
||||
r"(?m)^iconst_1\n^invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont\.setBold:\(Z\)V\s*$",
|
||||
"__poi_HSSFFont_bold__",
|
||||
),
|
||||
(
|
||||
r"(?m)^sipush 32767\n^invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont\.setColor:\(S\)V\s*$",
|
||||
"__poi_HSSFFont_setColor_RED__",
|
||||
),
|
||||
(
|
||||
r"(?m)^getstatic # // Field org/apache/poi/ss/usermodel/IndexedColors\.RED:.+\n"
|
||||
r"^invokevirtual # // Method org/apache/poi/ss/usermodel/IndexedColors\.getIndex:\(\)S\n"
|
||||
r"^invokevirtual # // Method org/apache/poi/hssf/usermodel/HSSFFont\.setColor:\(S\)V\s*$",
|
||||
"__poi_HSSFFont_setColor_RED__",
|
||||
),
|
||||
]
|
||||
for pat, tok in poi_tokens:
|
||||
result = re.sub(pat, tok, result)
|
||||
|
||||
result = _collapse_double_goto(result)
|
||||
return result
|
||||
+331
@@ -0,0 +1,331 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
V1 原始 jar vs V2 编译 jar 的字节码多维对比(根因归类)
|
||||
|
||||
维度:
|
||||
1) 类存在性:ONLY_V1 / ONLY_V2
|
||||
2) API 签名:javap -p -s 归一化后 hash
|
||||
3) 方法实现:javap -c -p 归一化后 hash
|
||||
|
||||
说明:
|
||||
- 仅比较 cn/cloudwalk/elevator/** 下 class
|
||||
- 忽略常量池索引号、栈帧偏移等不稳定文本
|
||||
- 行级归一见 `norm_code`,二次归一见同目录 `bytecode_norm_post.norm_code_post`
|
||||
- 输出 Markdown + JSON,便于复盘与持续回归
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
from collections import Counter, defaultdict
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
from bytecode_norm_post import norm_code_post
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[3]
|
||||
V1_ROOT = REPO_ROOT.parent / "cw-elevator-application-V1.0.0.20211103" / "cw_lib"
|
||||
|
||||
PAIR = [
|
||||
("cw-elevator-application-common", "cw-elevator-application-common"),
|
||||
("cw-elevator-application-data", "cw-elevator-application-data"),
|
||||
("cw-elevator-application-service", "cw-elevator-application-service"),
|
||||
("cw-elevator-application-web", "cw-elevator-application-web"),
|
||||
]
|
||||
|
||||
|
||||
@dataclass
|
||||
class ClassCompare:
|
||||
module: str
|
||||
class_name: str
|
||||
status: str
|
||||
api_equal: bool | None = None
|
||||
code_equal: bool | None = None
|
||||
api_hash_v1: str | None = None
|
||||
api_hash_v2: str | None = None
|
||||
code_hash_v1: str | None = None
|
||||
code_hash_v2: str | None = None
|
||||
|
||||
|
||||
def shasum(text: str) -> str:
|
||||
return hashlib.sha256(text.encode("utf-8")).hexdigest()
|
||||
|
||||
|
||||
def run(cmd: list[str]) -> str:
|
||||
return subprocess.check_output(cmd, text=True, stderr=subprocess.DEVNULL)
|
||||
|
||||
|
||||
def jar_classes(jar_file: Path) -> set[str]:
|
||||
lines = run(["jar", "tf", str(jar_file)]).splitlines()
|
||||
out: set[str] = set()
|
||||
for ln in lines:
|
||||
if not ln.endswith(".class"):
|
||||
continue
|
||||
if "$" in ln:
|
||||
# 内部类单独比较噪声较大,先跳过;主类稳定后可再扩展
|
||||
continue
|
||||
if not ln.startswith("cn/cloudwalk/elevator/"):
|
||||
continue
|
||||
out.add(ln[:-6].replace("/", "."))
|
||||
return out
|
||||
|
||||
|
||||
def norm_api(text: str) -> str:
|
||||
"""
|
||||
取 javap -p -s 中成员声明 + descriptor,将「成员行 + 下一行 descriptor:」合并为一条后排序,
|
||||
避免 Lombok/编译器仅改变类内声明顺序时误判为 API 变更。
|
||||
"""
|
||||
kept = []
|
||||
for ln in text.splitlines():
|
||||
s = ln.strip()
|
||||
if not s:
|
||||
continue
|
||||
if s.startswith("Compiled from"):
|
||||
continue
|
||||
if s.startswith("Classfile "):
|
||||
continue
|
||||
if s.startswith("flags:"):
|
||||
continue
|
||||
if s.startswith("descriptor:") or s.endswith(";") or s.startswith("public ") or s.startswith("protected ") or s.startswith("private "):
|
||||
kept.append(s)
|
||||
merged: list[str] = []
|
||||
i = 0
|
||||
while i < len(kept):
|
||||
if i + 1 < len(kept) and kept[i + 1].startswith("descriptor:"):
|
||||
merged.append(kept[i] + "\t" + kept[i + 1])
|
||||
i += 2
|
||||
else:
|
||||
merged.append(kept[i])
|
||||
i += 1
|
||||
merged.sort()
|
||||
return "\n".join(merged)
|
||||
|
||||
|
||||
def norm_code(text: str) -> str:
|
||||
out = []
|
||||
skip_exc = False
|
||||
for ln in text.splitlines():
|
||||
s = ln.rstrip()
|
||||
if not s:
|
||||
continue
|
||||
if s.startswith("Compiled from"):
|
||||
continue
|
||||
if s.startswith("Classfile "):
|
||||
continue
|
||||
# Exception table 仅偏移不同,与语义无关;整块跳过以免误判 IMPL_DIFF
|
||||
if "Exception table:" in s:
|
||||
skip_exc = True
|
||||
continue
|
||||
if skip_exc:
|
||||
if re.match(r"^\s{2}public\s+", s) or re.match(r"^\s{2}private\s+", s) or re.match(r"^\s{2}protected\s+", s):
|
||||
skip_exc = False
|
||||
else:
|
||||
continue
|
||||
# 去掉偏移量与常量池索引,保留操作码与调用目标
|
||||
s = re.sub(r"^\s*\d+:\s*", "", s)
|
||||
s = re.sub(r"#\d+", "#", s)
|
||||
# javap 的常量池注释对齐空格数量不稳定,压缩为空格规范形态
|
||||
s = re.sub(r"#\s+//", "# //", s)
|
||||
# 屏蔽 invokeinterface 参数位计数噪声
|
||||
s = re.sub(r",\s+\d+\s+//", " //", s)
|
||||
# 跳转目标偏移对语义无影响,归一化
|
||||
s = re.sub(
|
||||
r"\b(if(?:eq|ne|lt|gt|le|ge|null|nonnull)|if_icmp(?:eq|ne|lt|gt|le|ge)|if_acmp(?:eq|ne)|goto|jsr)\s+\d+\b",
|
||||
r"\1 @",
|
||||
s,
|
||||
)
|
||||
# 局部变量槽位号对语义无影响(编译器可重排)
|
||||
s = re.sub(
|
||||
r"\b([adfil]load|[adfil]store|aload|astore|iload|istore|lload|lstore|fload|fstore|dload|dstore)\s+\d+\b",
|
||||
r"\1 _",
|
||||
s,
|
||||
)
|
||||
# 归一化单字节槽位指令(如 aload_0 / istore_3)
|
||||
s = re.sub(r"\b([adfil]load|[adfil]store|aload|astore|iload|istore|lload|lstore|fload|fstore|dload|dstore)_[0-3]\b", r"\1 _", s)
|
||||
# javap 输出为 iinc slot,const(含逗号);旧正则漏匹配会导致槽位噪声残留
|
||||
s = re.sub(r"\biinc\s+\d+\s*,\s*(-?\d+)\b", r"iinc _ \1", s)
|
||||
# ArrayList 通过接口类型调用与具体类调用语义一致,归一为 List 接口描述
|
||||
s = re.sub(
|
||||
r"invokevirtual\s+#\s+//\s*Method java/util/ArrayList\.(add|size)\b[^\n]*",
|
||||
r"invokeinterface # // InterfaceMethod java/util/List.\1:(UNKNOWN)",
|
||||
s,
|
||||
)
|
||||
s = re.sub(
|
||||
r"invokeinterface\s+#\s+//\s*InterfaceMethod java/util/List\.(add|size)\b[^\n]*",
|
||||
r"invokeinterface # // InterfaceMethod java/util/List.\1:(UNKNOWN)",
|
||||
s,
|
||||
)
|
||||
# tableswitch/lookupswitch 去掉行首偏移后,残余纯数字行与 default:<off> 仅反映布局,语义无差别
|
||||
st = s.strip()
|
||||
if re.fullmatch(r"\d+", st):
|
||||
s = "<switch_target>"
|
||||
elif re.fullmatch(r"default:\s*\d+", st):
|
||||
s = "default: <switch_target>"
|
||||
out.append(s.strip())
|
||||
return norm_code_post("\n".join(out))
|
||||
|
||||
|
||||
def javap_api(jar_file: Path, class_name: str) -> str:
|
||||
return run(["javap", "-classpath", str(jar_file), "-p", "-s", class_name])
|
||||
|
||||
|
||||
def javap_code(jar_file: Path, class_name: str) -> str:
|
||||
return run(["javap", "-classpath", str(jar_file), "-p", "-c", class_name])
|
||||
|
||||
|
||||
def compare_module(module: str, v1_jar: Path, v2_jar: Path) -> list[ClassCompare]:
|
||||
v1_classes = jar_classes(v1_jar)
|
||||
v2_classes = jar_classes(v2_jar)
|
||||
records: list[ClassCompare] = []
|
||||
for cls in sorted(v1_classes | v2_classes):
|
||||
if cls not in v2_classes:
|
||||
records.append(ClassCompare(module=module, class_name=cls, status="ONLY_V1"))
|
||||
continue
|
||||
if cls not in v1_classes:
|
||||
records.append(ClassCompare(module=module, class_name=cls, status="ONLY_V2"))
|
||||
continue
|
||||
|
||||
api1 = norm_api(javap_api(v1_jar, cls))
|
||||
api2 = norm_api(javap_api(v2_jar, cls))
|
||||
code1 = norm_code(javap_code(v1_jar, cls))
|
||||
code2 = norm_code(javap_code(v2_jar, cls))
|
||||
api_h1, api_h2 = shasum(api1), shasum(api2)
|
||||
code_h1, code_h2 = shasum(code1), shasum(code2)
|
||||
api_eq = api_h1 == api_h2
|
||||
code_eq = code_h1 == code_h2
|
||||
if api_eq and code_eq:
|
||||
st = "MATCH"
|
||||
elif api_eq and not code_eq:
|
||||
st = "IMPL_DIFF"
|
||||
else:
|
||||
st = "API_DIFF"
|
||||
records.append(
|
||||
ClassCompare(
|
||||
module=module,
|
||||
class_name=cls,
|
||||
status=st,
|
||||
api_equal=api_eq,
|
||||
code_equal=code_eq,
|
||||
api_hash_v1=api_h1,
|
||||
api_hash_v2=api_h2,
|
||||
code_hash_v1=code_h1,
|
||||
code_hash_v2=code_h2,
|
||||
)
|
||||
)
|
||||
return records
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument(
|
||||
"--out-md",
|
||||
default=str(REPO_ROOT / "tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.md"),
|
||||
)
|
||||
ap.add_argument(
|
||||
"--out-json",
|
||||
default=str(REPO_ROOT / "tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.json"),
|
||||
)
|
||||
args = ap.parse_args()
|
||||
|
||||
all_records: list[ClassCompare] = []
|
||||
for mod_short, mod_art in PAIR:
|
||||
v1_jar = V1_ROOT / f"{mod_art}-1.0-SNAPSHOT.jar"
|
||||
v2_jar = REPO_ROOT / mod_short / "target" / f"{mod_art}-2.0-SNAPSHOT.jar"
|
||||
if not v1_jar.is_file() or not v2_jar.is_file():
|
||||
raise SystemExit(f"missing jar for module {mod_short}: v1={v1_jar} v2={v2_jar}")
|
||||
all_records.extend(compare_module(mod_short, v1_jar=v1_jar, v2_jar=v2_jar))
|
||||
|
||||
counter = Counter(r.status for r in all_records)
|
||||
mod_counter: dict[str, Counter] = defaultdict(Counter)
|
||||
for r in all_records:
|
||||
mod_counter[r.module][r.status] += 1
|
||||
|
||||
payload = {
|
||||
"generated_at_utc": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
|
||||
"summary": dict(counter),
|
||||
"module_summary": {k: dict(v) for k, v in mod_counter.items()},
|
||||
"records": [r.__dict__ for r in all_records],
|
||||
}
|
||||
out_json = Path(args.out_json)
|
||||
out_json.parent.mkdir(parents=True, exist_ok=True)
|
||||
out_json.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
|
||||
md = []
|
||||
md.append("# V1 vs V2 字节码根因分析")
|
||||
md.append("")
|
||||
md.append(f"- 生成时间(UTC):`{payload['generated_at_utc']}`")
|
||||
md.append("- 对比范围:四模块 `cn/cloudwalk/elevator/**` 主类(不含 `$` 内部类)")
|
||||
md.append("- 维度:类存在性 / API签名 / 方法实现")
|
||||
md.append("")
|
||||
md.append("## 1. 总览")
|
||||
md.append("")
|
||||
md.append("| 维度 | 数量 |")
|
||||
md.append("|---|---:|")
|
||||
for k in ["MATCH", "IMPL_DIFF", "API_DIFF", "ONLY_V1", "ONLY_V2"]:
|
||||
md.append(f"| {k} | {counter.get(k, 0)} |")
|
||||
md.append("")
|
||||
md.append("## 2. 各模块分布")
|
||||
md.append("")
|
||||
md.append("| 模块 | MATCH | IMPL_DIFF | API_DIFF | ONLY_V1 | ONLY_V2 |")
|
||||
md.append("|---|---:|---:|---:|---:|---:|")
|
||||
for m in [p[0] for p in PAIR]:
|
||||
c = mod_counter[m]
|
||||
md.append(
|
||||
f"| {m} | {c.get('MATCH',0)} | {c.get('IMPL_DIFF',0)} | {c.get('API_DIFF',0)} | {c.get('ONLY_V1',0)} | {c.get('ONLY_V2',0)} |"
|
||||
)
|
||||
md.append("")
|
||||
|
||||
def section(title: str, status: str, limit: int = 120) -> None:
|
||||
md.append(f"## {title}")
|
||||
md.append("")
|
||||
rs = [r for r in all_records if r.status == status]
|
||||
if not rs:
|
||||
md.append("- 无")
|
||||
md.append("")
|
||||
return
|
||||
md.append("| 模块 | 类 |")
|
||||
md.append("|---|---|")
|
||||
for r in rs[:limit]:
|
||||
md.append(f"| {r.module} | `{r.class_name}` |")
|
||||
if len(rs) > limit:
|
||||
md.append(f"| ... | 其余 {len(rs)-limit} 个见 JSON |")
|
||||
md.append("")
|
||||
|
||||
section("3. API 相同但实现不同(优先查 JD-GUI 还原误差/人工改写)", "IMPL_DIFF")
|
||||
section("4. API 不同(优先查源码结构漂移)", "API_DIFF")
|
||||
section("5. 仅 V2 存在(新增类)", "ONLY_V2")
|
||||
section("6. 仅 V1 存在(缺失类)", "ONLY_V1")
|
||||
|
||||
md.append("## 7. 根因判读指引")
|
||||
md.append("")
|
||||
md.append("- `IMPL_DIFF`:若对应源码与 CFR 文本高度相似但字节码仍不同,多为 JD-GUI 语句重排/条件翻译偏差或后续手工改写。")
|
||||
md.append("- `API_DIFF`:优先判定为“源码结构变化”,例如方法签名、字段类型、泛型边界变化。")
|
||||
md.append("- `ONLY_V2/ONLY_V1`:属于文件集合漂移(新增/漏还原/清理)。")
|
||||
md.append("")
|
||||
md.append("## 8. API_DIFF 判读")
|
||||
md.append("")
|
||||
md.append("- **成员顺序**:同签名不同顺序(常见于 Lombok getter/setter 顺序)已由 `norm_api` 合并 descriptor 后排序消除伪差异。")
|
||||
md.append("- **默认可视构造**:仅含 static 的类若未写显式私有空参构造,javac 可能生成 **public** 默认构造,与旧 JAR 中 **private** 不同;可在源码中补充与 V1 一致。")
|
||||
md.append("- **真实契约差异**:仍报 API_DIFF 时多为 V2 **新增/改签名** 的方法或字段,需对照业务是否保留(并非脚本噪声)。")
|
||||
md.append("")
|
||||
md.append("## 9. 实现归一化(摘要)")
|
||||
md.append("")
|
||||
md.append("- **行级**:指令偏移、`#` 常量池下标、`if_icmp*`/`goto` 目标、`xload`/`xstore` 槽位、`iinc`、"
|
||||
"`ArrayList`→`List` 的 add/size、`tableswitch` 纯数字行等。")
|
||||
md.append("- **二次(`bytecode_norm_post`)**:`ifxx`+`goto` 蹦床→反条件单条;连续 `goto @` 折叠;"
|
||||
"连续重复 `checkcast` 去重;`String.join` 前冗余 `checkcast java/lang/String`;"
|
||||
"`iconst_0`+dup 与 istore/iload 轮换初始化局部;Apache POI `setCellType`/`setBold`/`setColor` 新旧 API 占位符。")
|
||||
md.append("")
|
||||
Path(args.out_md).write_text("\n".join(md), encoding="utf-8")
|
||||
print(f"WROTE: {args.out_md}")
|
||||
print(f"WROTE: {args.out_json}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import annotations
|
||||
|
||||
import difflib
|
||||
import json
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
from bytecode_parity_rootcause import norm_code
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[3]
|
||||
REPORT = ROOT / "tools/elevator_api_parity/report/V1-V2-BYTECODE-ROOTCAUSE.json"
|
||||
OUT = ROOT / "tools/elevator_api_parity/report/impl-diff-evidence-20260428"
|
||||
V1 = ROOT.parent / "cw-elevator-application-V1.0.0.20211103/cw_lib"
|
||||
|
||||
PAIR = {
|
||||
"cw-elevator-application-common": "cw-elevator-application-common",
|
||||
"cw-elevator-application-data": "cw-elevator-application-data",
|
||||
"cw-elevator-application-service": "cw-elevator-application-service",
|
||||
"cw-elevator-application-web": "cw-elevator-application-web",
|
||||
}
|
||||
|
||||
|
||||
def run(cmd: list[str]) -> str:
|
||||
return subprocess.check_output(cmd, text=True, stderr=subprocess.DEVNULL)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
data = json.loads(REPORT.read_text(encoding="utf-8"))
|
||||
records = [r for r in data["records"] if r["status"] == "IMPL_DIFF"]
|
||||
index = []
|
||||
for r in records:
|
||||
module = r["module"]
|
||||
art = PAIR[module]
|
||||
cls = r["class_name"]
|
||||
v1_jar = V1 / f"{art}-1.0-SNAPSHOT.jar"
|
||||
v2_jar = ROOT / module / "target" / f"{art}-2.0-SNAPSHOT.jar"
|
||||
raw1 = run(["javap", "-classpath", str(v1_jar), "-p", "-c", cls])
|
||||
raw2 = run(["javap", "-classpath", str(v2_jar), "-p", "-c", cls])
|
||||
n1 = norm_code(raw1)
|
||||
n2 = norm_code(raw2)
|
||||
cls_file = cls.replace(".", "_")
|
||||
p1 = OUT / f"{cls_file}.v1.javap.txt"
|
||||
p2 = OUT / f"{cls_file}.v2.javap.txt"
|
||||
pd = OUT / f"{cls_file}.diff.txt"
|
||||
p1.write_text(n1, encoding="utf-8")
|
||||
p2.write_text(n2, encoding="utf-8")
|
||||
diff = "".join(
|
||||
difflib.unified_diff(
|
||||
n1.splitlines(keepends=True),
|
||||
n2.splitlines(keepends=True),
|
||||
fromfile=f"{cls}.v1",
|
||||
tofile=f"{cls}.v2",
|
||||
n=3,
|
||||
)
|
||||
)
|
||||
pd.write_text(diff, encoding="utf-8")
|
||||
index.append(
|
||||
{
|
||||
"module": module,
|
||||
"class_name": cls,
|
||||
"v1_file": str(p1),
|
||||
"v2_file": str(p2),
|
||||
"diff_file": str(pd),
|
||||
"diff_lines": len(diff.splitlines()),
|
||||
}
|
||||
)
|
||||
idx = {
|
||||
"generated_at": datetime.utcnow().isoformat() + "Z",
|
||||
"count": len(index),
|
||||
"items": index,
|
||||
}
|
||||
(OUT / "INDEX.json").write_text(json.dumps(idx, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
print(str(OUT))
|
||||
print(f"IMPL_DIFF files: {len(index)}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
+187
@@ -0,0 +1,187 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
将 Maven 模块 `src/main/java/cn/cloudwalk/elevator` 与 V1 CFR 反编译树(decompile_v1_elevator_jars.sh 输出)按类文件路径配对,写相似度报告。
|
||||
|
||||
环境变量:
|
||||
V1_DECOMP_ROOT 默认: <maven根>/tools/v1-decompiled/cfr-from-cw-lib-current
|
||||
MV_ROOT 默认: 本脚本上溯 3 级到 maven-cw-elevator-application
|
||||
OUT_MD 默认: tools/elevator_api_parity/report/SOURCE-PARITY-BY-CLASS-decomp.md
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import difflib
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
SCR = Path(__file__).resolve()
|
||||
# scripts -> elevator_api_parity -> tools -> maven-cw-elevator-application
|
||||
MV_ROOT = Path(os.environ.get("MV_ROOT", SCR.parents[3]))
|
||||
_DEFAULT_V1 = MV_ROOT / "tools" / "v1-decompiled" / "cfr-from-cw-lib-current"
|
||||
|
||||
# Maven 模块名 -> V1 反编译目录名(脚本输出的子目录前缀)
|
||||
_PAIR = [
|
||||
("cw-elevator-application-common", "cw-elevator-application-common-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-data", "cw-elevator-application-data-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-service", "cw-elevator-application-service-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-web", "cw-elevator-application-web-1.0-SNAPSHOT"),
|
||||
]
|
||||
|
||||
|
||||
def strip_java_comments(text: str) -> str:
|
||||
text = re.sub(r"/\*.*?\*/", "", text, flags=re.DOTALL)
|
||||
text = re.sub(r"//[^\n]*", "", text)
|
||||
lines = [ln.strip() for ln in text.splitlines() if ln.strip()]
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def similarity(a: str, b: str) -> float:
|
||||
ca, cb = strip_java_comments(a), strip_java_comments(b)
|
||||
return difflib.SequenceMatcher(a=ca, b=cb).ratio()
|
||||
|
||||
|
||||
def tag_only_mv(rel: str) -> str:
|
||||
if "TenantVisitorFloor" in rel:
|
||||
return "租户访客楼层策略(V2)"
|
||||
if rel.endswith("package-info.java"):
|
||||
return "package-info"
|
||||
if "CloudwalkSessionHolderConfiguration" in rel:
|
||||
return "Session 扩展"
|
||||
if "ElevatorRemoteIo" in rel:
|
||||
return "远程 IO 池"
|
||||
if "DavinciStorageBeansConfiguration" in rel or "OpenFeignFileStorageManager" in rel:
|
||||
return "Davinci 存储"
|
||||
if "ZoneTreeCollectors" in rel:
|
||||
return "工具类"
|
||||
return ""
|
||||
|
||||
|
||||
def main() -> int:
|
||||
v1_root_parent = Path(os.environ.get("V1_DECOMP_ROOT", _DEFAULT_V1)).resolve()
|
||||
if not v1_root_parent.is_dir():
|
||||
print(f"ERROR: V1 decompile dir missing: {v1_root_parent}", file=sys.stderr)
|
||||
print("Run: maven-cw-elevator-application/scripts/decompile_v1_elevator_jars.sh", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
out_md = Path(
|
||||
os.environ.get(
|
||||
"OUT_MD",
|
||||
MV_ROOT / "tools/elevator_api_parity/report/SOURCE-PARITY-BY-CLASS-decomp.md",
|
||||
)
|
||||
)
|
||||
|
||||
lines: list[str] = []
|
||||
lines.append("# Maven 源码 vs V1 自动反编译(cw_lib jar / CFR)逐类比对")
|
||||
lines.append("")
|
||||
lines.append(f"- **V1 根**: `{v1_root_parent}`(`decompile_v1_elevator_jars.sh` 生成)")
|
||||
lines.append(f"- **V2 根**: `{MV_ROOT}/{{module}}/src/main/java/cn/cloudwalk/elevator`")
|
||||
lines.append("- **相似度**: 去注释后 `SequenceMatcher.ratio`(CFR 噪声会导致分数偏低)")
|
||||
lines.append("")
|
||||
|
||||
all_rows: list[tuple[str, str, float]] = []
|
||||
tot = {"paired": 0, "ge98": 0, "85": 0, "lt": 0, "o1": 0, "o2": 0}
|
||||
summary_rows: list[str] = []
|
||||
|
||||
for mod_mvn, mod_v1dir in _PAIR:
|
||||
v1_elev = v1_root_parent / mod_v1dir / "cn/cloudwalk/elevator"
|
||||
mv_elev = MV_ROOT / mod_mvn / "src/main/java/cn/cloudwalk/elevator"
|
||||
if not v1_elev.is_dir():
|
||||
summary_rows.append(f"| {mod_mvn} | — | — | **V1 侧目录不存在**: `{v1_elev}` |")
|
||||
continue
|
||||
if not mv_elev.is_dir():
|
||||
summary_rows.append(f"| {mod_mvn} | — | — | **Maven 侧目录不存在** |")
|
||||
continue
|
||||
|
||||
v1_files = {str(p.relative_to(v1_elev)).replace("\\", "/"): p for p in v1_elev.rglob("*.java")}
|
||||
mv_files = {str(p.relative_to(mv_elev)).replace("\\", "/"): p for p in mv_elev.rglob("*.java")}
|
||||
cnt = {"paired": 0, "ge98": 0, "85_98": 0, "lt85": 0, "only_v1": 0, "only_mv": 0}
|
||||
|
||||
for rel in sorted(set(v1_files) | set(mv_files)):
|
||||
p1, pm = v1_files.get(rel), mv_files.get(rel)
|
||||
if p1 and pm:
|
||||
cnt["paired"] += 1
|
||||
try:
|
||||
s = similarity(
|
||||
p1.read_text(encoding="utf-8", errors="replace"),
|
||||
pm.read_text(encoding="utf-8", errors="replace"),
|
||||
)
|
||||
except OSError:
|
||||
s = 0.0
|
||||
if s >= 0.98:
|
||||
cnt["ge98"] += 1
|
||||
elif s >= 0.85:
|
||||
cnt["85_98"] += 1
|
||||
else:
|
||||
cnt["lt85"] += 1
|
||||
all_rows.append((f"{mod_mvn}/{rel}", s))
|
||||
elif p1:
|
||||
cnt["only_v1"] += 1
|
||||
else:
|
||||
cnt["only_mv"] += 1
|
||||
|
||||
tot["paired"] += cnt["paired"]
|
||||
tot["ge98"] += cnt["ge98"]
|
||||
tot["85"] += cnt["85_98"]
|
||||
tot["lt"] += cnt["lt85"]
|
||||
tot["o1"] += cnt["only_v1"]
|
||||
tot["o2"] += cnt["only_mv"]
|
||||
|
||||
summary_rows.append(
|
||||
f"| {mod_mvn} | {cnt['paired']} | {cnt['ge98']} | {cnt['85_98']} | {cnt['lt85']} | "
|
||||
f"{cnt['only_v1']} | {cnt['only_mv']} |"
|
||||
)
|
||||
|
||||
lines.append("## 1. 汇总(四模块来自 cw_lib jar 反编译)")
|
||||
lines.append("")
|
||||
lines.append(
|
||||
"| 模块 | 配对 | ≥0.98 | 0.85–0.98 | <0.85 | 仅 V1 | 仅 Maven |"
|
||||
)
|
||||
lines.append("|------|------|-------|-----------|-------|-------|------------|")
|
||||
lines.extend(summary_rows)
|
||||
lines.append(
|
||||
f"| **合计** | **{tot['paired']}** | **{tot['ge98']}** | **{tot['85']}** | **{tot['lt']}** | **{tot['o1']}** | **{tot['o2']}** |"
|
||||
)
|
||||
lines.append("")
|
||||
|
||||
# 仅 Maven
|
||||
lines.append("## 2. 仅 Maven(相对 `cn/cloudwalk/elevator`)")
|
||||
lines.append("")
|
||||
for mod_mvn, mod_v1dir in _PAIR:
|
||||
v1_elev = v1_root_parent / mod_v1dir / "cn/cloudwalk/elevator"
|
||||
mv_elev = MV_ROOT / mod_mvn / "src/main/java/cn/cloudwalk/elevator"
|
||||
if not mv_elev.is_dir() or not v1_elev.is_dir():
|
||||
continue
|
||||
v1_set = {str(p.relative_to(v1_elev)).replace("\\", "/") for p in v1_elev.rglob("*.java")}
|
||||
extras = []
|
||||
for p in sorted(mv_elev.rglob("*.java")):
|
||||
rel = str(p.relative_to(mv_elev)).replace("\\", "/")
|
||||
if rel not in v1_set:
|
||||
tg = tag_only_mv(rel)
|
||||
extras.append(f"- `{rel}`" + (f" — *{tg}*" if tg else ""))
|
||||
if extras:
|
||||
lines.append(f"### {mod_mvn}")
|
||||
lines.extend(extras)
|
||||
lines.append("")
|
||||
|
||||
worst = sorted(all_rows, key=lambda x: x[1])[:35]
|
||||
best = sorted(all_rows, key=lambda x: -x[1])[:15]
|
||||
lines.append("## 3. 样本:最高 / 最低相似度路径")
|
||||
lines.append("")
|
||||
lines.append("### 最高")
|
||||
for path, s in best:
|
||||
lines.append(f"- `{path}` **{s:.4f}**")
|
||||
lines.append("")
|
||||
lines.append("### 最低(优先 IDE diff)")
|
||||
for path, s in worst:
|
||||
lines.append(f"- `{path}` **{s:.4f}**")
|
||||
|
||||
out_md.parent.mkdir(parents=True, exist_ok=True)
|
||||
out_md.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||
print(out_md)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Executable
+266
@@ -0,0 +1,266 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
V1(CFR 反编译 cw_lib) vs V2(Maven 源码)全量类级比对,输出:
|
||||
- Markdown 报告(汇总 + 分桶完整清单 + 问题梳理)
|
||||
- 可选 JSON(--json)
|
||||
|
||||
环境变量同 source_parity_scan.py:V1_DECOMP_ROOT、MV_ROOT
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import difflib
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
SCR = Path(__file__).resolve()
|
||||
MV_ROOT = Path(os.environ.get("MV_ROOT", SCR.parents[3]))
|
||||
_DEFAULT_V1 = MV_ROOT / "tools" / "v1-decompiled" / "cfr-from-cw-lib-current"
|
||||
|
||||
_PAIR = [
|
||||
("cw-elevator-application-common", "cw-elevator-application-common-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-data", "cw-elevator-application-data-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-service", "cw-elevator-application-service-1.0-SNAPSHOT"),
|
||||
("cw-elevator-application-web", "cw-elevator-application-web-1.0-SNAPSHOT"),
|
||||
]
|
||||
|
||||
|
||||
def strip_java_comments(text: str) -> str:
|
||||
text = re.sub(r"/\*.*?\*/", "", text, flags=re.DOTALL)
|
||||
text = re.sub(r"//[^\n]*", "", text)
|
||||
lines = [ln.strip() for ln in text.splitlines() if ln.strip()]
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def similarity(a: str, b: str) -> float:
|
||||
ca, cb = strip_java_comments(a), strip_java_comments(b)
|
||||
return difflib.SequenceMatcher(a=ca, b=cb).ratio()
|
||||
|
||||
|
||||
def tag_only_mv(rel: str) -> str:
|
||||
if "TenantVisitorFloor" in rel:
|
||||
return "V2扩展-租户访客楼层"
|
||||
if rel.endswith("package-info.java"):
|
||||
return "工程化-package-info"
|
||||
if "CloudwalkSessionHolderConfiguration" in rel:
|
||||
return "V2扩展-Session"
|
||||
if "ElevatorRemoteIo" in rel:
|
||||
return "V2扩展-远程IO线程池"
|
||||
if "DavinciStorageBeansConfiguration" in rel or "OpenFeignFileStorageManager" in rel:
|
||||
return "V2扩展-Davinci存储"
|
||||
if "ZoneTreeCollectors" in rel:
|
||||
return "V2独有-工具类"
|
||||
return "V2独有-待分类"
|
||||
|
||||
|
||||
def review_priority(rel: str) -> str:
|
||||
r = rel.replace("\\", "/")
|
||||
if "/controller/" in r or r.endswith("Controller.java"):
|
||||
return "高-Controller"
|
||||
if "FeignClient" in r or "/client/" in r:
|
||||
return "高-Feign/Client"
|
||||
if "ServiceImpl" in r or "/impl/" in r:
|
||||
return "高-Service/DaoImpl"
|
||||
if "/mapper/" in r or "Mapper.java" in r:
|
||||
return "中-Mapper接口"
|
||||
if "/dto/" in r or "/param/" in r or "/form/" in r or "/result/" in r:
|
||||
return "中-DTO表单"
|
||||
if "/em/" in r or "Enum.java" in r:
|
||||
return "低-枚举(CFR噪声常见)"
|
||||
if "/util/" in r:
|
||||
return "低-工具类"
|
||||
return "中-其他"
|
||||
|
||||
|
||||
def bucket(score: float) -> str:
|
||||
if score >= 0.98:
|
||||
return "A-高度一致"
|
||||
if score >= 0.85:
|
||||
return "B-轻度差异"
|
||||
return "C-显著差异"
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--json", action="store_true", help="额外写出 JSON")
|
||||
ap.add_argument(
|
||||
"--out",
|
||||
default=str(MV_ROOT / "tools/elevator_api_parity/report/V1-V2-DIFF-ISSUES.md"),
|
||||
help="Markdown 输出路径",
|
||||
)
|
||||
args = ap.parse_args()
|
||||
|
||||
v1_root_parent = Path(os.environ.get("V1_DECOMP_ROOT", _DEFAULT_V1)).resolve()
|
||||
if not v1_root_parent.is_dir():
|
||||
print(f"ERROR: V1 decompile dir missing: {v1_root_parent}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
records: list[dict] = []
|
||||
only_mv: list[tuple[str, str, str]] = []
|
||||
totals = {"paired": 0, "A": 0, "B": 0, "C": 0, "only_v1": 0, "only_mv": 0}
|
||||
|
||||
for mod_mvn, mod_v1dir in _PAIR:
|
||||
v1_elev = v1_root_parent / mod_v1dir / "cn/cloudwalk/elevator"
|
||||
mv_elev = MV_ROOT / mod_mvn / "src/main/java/cn/cloudwalk/elevator"
|
||||
if not v1_elev.is_dir() or not mv_elev.is_dir():
|
||||
continue
|
||||
|
||||
v1_files = {str(p.relative_to(v1_elev)).replace("\\", "/"): p for p in v1_elev.rglob("*.java")}
|
||||
mv_files = {str(p.relative_to(mv_elev)).replace("\\", "/"): p for p in mv_elev.rglob("*.java")}
|
||||
|
||||
for rel in sorted(set(v1_files) | set(mv_files)):
|
||||
p1, pm = v1_files.get(rel), mv_files.get(rel)
|
||||
if p1 and pm:
|
||||
totals["paired"] += 1
|
||||
try:
|
||||
t1 = p1.read_text(encoding="utf-8", errors="replace")
|
||||
t2 = pm.read_text(encoding="utf-8", errors="replace")
|
||||
s = similarity(t1, t2)
|
||||
except OSError:
|
||||
s = 0.0
|
||||
t1 = t2 = ""
|
||||
bk = bucket(s)
|
||||
if bk.startswith("A"):
|
||||
totals["A"] += 1
|
||||
elif bk.startswith("B"):
|
||||
totals["B"] += 1
|
||||
else:
|
||||
totals["C"] += 1
|
||||
pri = review_priority(rel)
|
||||
records.append(
|
||||
{
|
||||
"module": mod_mvn,
|
||||
"relative_path": rel,
|
||||
"similarity": round(s, 6),
|
||||
"bucket": bk,
|
||||
"review_priority": pri,
|
||||
"v1_file": str(p1),
|
||||
"v2_file": str(pm),
|
||||
}
|
||||
)
|
||||
elif p1:
|
||||
totals["only_v1"] += 1
|
||||
records.append(
|
||||
{
|
||||
"module": mod_mvn,
|
||||
"relative_path": rel,
|
||||
"similarity": None,
|
||||
"bucket": "ONLY_V1",
|
||||
"review_priority": review_priority(rel),
|
||||
"v1_file": str(p1),
|
||||
"v2_file": None,
|
||||
}
|
||||
)
|
||||
else:
|
||||
totals["only_mv"] += 1
|
||||
tg = tag_only_mv(rel)
|
||||
only_mv.append((mod_mvn, rel, tg))
|
||||
records.append(
|
||||
{
|
||||
"module": mod_mvn,
|
||||
"relative_path": rel,
|
||||
"similarity": None,
|
||||
"bucket": "ONLY_MAVEN",
|
||||
"review_priority": tg,
|
||||
"v1_file": None,
|
||||
"v2_file": str(pm),
|
||||
}
|
||||
)
|
||||
|
||||
out_md = Path(args.out)
|
||||
out_md.parent.mkdir(parents=True, exist_ok=True)
|
||||
ts = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
|
||||
md: list[str] = []
|
||||
md.append("# V1 vs V2 源码差异与问题梳理(全自动比对)")
|
||||
md.append("")
|
||||
md.append(f"- **生成时间(UTC)**: {ts}")
|
||||
md.append(f"- **V1**: `{v1_root_parent}`(cw_lib jar → CFR)")
|
||||
md.append(f"- **V2**: `{MV_ROOT}/{{module}}/src/main/java/cn/cloudwalk/elevator`")
|
||||
md.append("- **相似度**: 去注释后全文 `SequenceMatcher.ratio`;**低分≠业务错误**(CFR 变量名/枚举顺序等)。")
|
||||
md.append("")
|
||||
md.append("## 1. 结论摘要")
|
||||
md.append("")
|
||||
md.append("| 维度 | 数量 | 说明 |")
|
||||
md.append("|------|------|------|")
|
||||
md.append(f"| 配对类 | {totals['paired']} | 同名路径 `.java` |")
|
||||
md.append(f"| A 桶 ≥0.98 | {totals['A']} | 文本高度接近 |")
|
||||
md.append(f"| B 桶 0.85–0.98 | {totals['B']} | 多为格式/注释/轻微差异,建议抽检 |")
|
||||
md.append(f"| C 桶 <0.85 | {totals['C']} | **优先 IDE diff**;枚举/DTO 常为 CFR 噪声 |")
|
||||
md.append(f"| 仅 V1 | {totals['only_v1']} | 当前四模块应为 0 |")
|
||||
md.append(f"| 仅 Maven | {totals['only_mv']} | V2 新增;访客楼层策略等为**已知扩展** |")
|
||||
md.append("")
|
||||
md.append("### 1.1 建议处置")
|
||||
md.append("")
|
||||
md.append("1. **仅 Maven**:`TenantVisitorFloor*` — 与 V1 对齐无关(产品已排除);`package-info` — 忽略。")
|
||||
md.append("2. **C 桶 + 高优先级**(Controller / ServiceImpl / Feign):优先人工对照业务分支与远程调用。")
|
||||
md.append("3. **C 桶 + 枚举/DTO**:优先视为 CFR 噪声,除非接口契约变更。")
|
||||
md.append("")
|
||||
|
||||
md.append("## 2. 仅 Maven 文件(问题/范围标注)")
|
||||
md.append("")
|
||||
for mod, rel, tg in sorted(only_mv, key=lambda x: (x[0], x[1])):
|
||||
md.append(f"- `{mod}/{rel}` — **{tg}**")
|
||||
md.append("")
|
||||
|
||||
md.append("## 3. C 桶(<0.85)按复核优先级分组")
|
||||
md.append("")
|
||||
c_records = [r for r in records if r.get("similarity") is not None and r["similarity"] < 0.85]
|
||||
by_pri: dict[str, list[dict]] = {}
|
||||
for r in c_records:
|
||||
by_pri.setdefault(r["review_priority"], []).append(r)
|
||||
for pri in sorted(by_pri.keys()):
|
||||
md.append(f"### {pri}")
|
||||
md.append("")
|
||||
md.append("| 路径 | 相似度 |")
|
||||
md.append("|------|--------|")
|
||||
for r in sorted(by_pri[pri], key=lambda x: -x["similarity"]):
|
||||
md.append(f"| `{r['module']}/{r['relative_path']}` | {r['similarity']:.4f} |")
|
||||
md.append("")
|
||||
|
||||
md.append("## 4. 完整配对表(全部类)")
|
||||
md.append("")
|
||||
md.append("| 模块 | 相对路径 | 相似度 | 分桶 | 复核优先级 |")
|
||||
md.append("|------|----------|--------|------|------------|")
|
||||
for r in sorted(
|
||||
[x for x in records if x.get("similarity") is not None],
|
||||
key=lambda x: (x["module"], x["relative_path"]),
|
||||
):
|
||||
md.append(
|
||||
f"| {r['module']} | `{r['relative_path']}` | {r['similarity']:.4f} | {r['bucket']} | {r['review_priority']} |"
|
||||
)
|
||||
md.append("")
|
||||
md.append("### 仅 V1 / 仅 Maven 行")
|
||||
md.append("")
|
||||
for r in records:
|
||||
if r["bucket"] in ("ONLY_V1", "ONLY_MAVEN"):
|
||||
md.append(f"- `{r['module']}/{r['relative_path']}` — **{r['bucket']}** — {r['review_priority']}")
|
||||
md.append("")
|
||||
|
||||
md.append("## 5. 生成命令")
|
||||
md.append("")
|
||||
md.append("```bash")
|
||||
md.append("cd maven-cw-elevator-application")
|
||||
md.append("./scripts/decompile_v1_elevator_jars.sh # 若尚未反编译 V1 jar")
|
||||
md.append("python3 tools/elevator_api_parity/scripts/v1_v2_diff_issues_report.py")
|
||||
md.append("```")
|
||||
md.append("")
|
||||
|
||||
out_md.write_text("\n".join(md) + "\n", encoding="utf-8")
|
||||
print(out_md)
|
||||
|
||||
if args.json:
|
||||
out_json = out_md.with_suffix(".json")
|
||||
out_json.write_text(json.dumps({"generated": ts, "totals": totals, "records": records}, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
||||
print(out_json)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
+37
-30
@@ -1,7 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
from parity.catalog_loader import endpoint_body as cb_body
|
||||
from parity.body_variants import iter_parity_request_cases
|
||||
from parity.catalog_loader import include_in_parity as cb_parity
|
||||
from parity.catalog_loader import load as load_catalog
|
||||
from parity.client import call_both
|
||||
@@ -15,37 +15,44 @@ def test_parity_from_catalog(
|
||||
base_new,
|
||||
session_http,
|
||||
):
|
||||
"""按 api_catalog 双端对拍(仅 ``include_in_parity`` 为 true 的条目)。compare_mode: deep | code_only | status_only"""
|
||||
"""按 api_catalog 双端对拍(仅 ``include_in_parity`` 为 true 的条目)。
|
||||
|
||||
基线体 + 可选 ``boundary_patches``(需 ``ELEVATOR_PARITY_BOUNDARY=1``)对入参做边界/范围扩展。
|
||||
compare_mode: deep | code_only | status_only
|
||||
"""
|
||||
cat = load_catalog()["endpoints"] # type: ignore[operator]
|
||||
for ep in cat:
|
||||
if not cb_parity(ep):
|
||||
continue
|
||||
name = ep["id"]
|
||||
body = cb_body(ep)
|
||||
pr = call_both(
|
||||
name=ep.get("name", name),
|
||||
method=ep.get("method", "POST"),
|
||||
path=ep["path"],
|
||||
body=body,
|
||||
base_old=base_old,
|
||||
base_new=base_new,
|
||||
session=session_http,
|
||||
compare_mode=ep.get("compare_mode", "code_only"),
|
||||
)
|
||||
row = {
|
||||
"id": name,
|
||||
"name": ep.get("name", name),
|
||||
"method": pr.method,
|
||||
"path": pr.path,
|
||||
"old_status": pr.old_status,
|
||||
"new_status": pr.new_status,
|
||||
"match": pr.match,
|
||||
"message": pr.message,
|
||||
}
|
||||
request.config._parity_rows.append(row) # type: ignore
|
||||
# 在 code_only 下通常允许两边同一业务 code;若都非 200 也记录
|
||||
assert pr.match, (
|
||||
f"{name} mismatch: {pr.message}\n"
|
||||
f"old_http={pr.old_status} new_http={pr.new_status}\n"
|
||||
f"old_head={pr.old_text[:500]!r}\nnew_head={pr.new_text[:500]!r}"
|
||||
)
|
||||
display = ep.get("name", name)
|
||||
for case_id, body in iter_parity_request_cases(ep):
|
||||
case_label = f"{name}:{case_id}" if case_id != "default" else name
|
||||
call_name = f"{display} [{case_id}]" if case_id != "default" else display
|
||||
pr = call_both(
|
||||
name=call_name,
|
||||
method=ep.get("method", "POST"),
|
||||
path=ep["path"],
|
||||
body=body,
|
||||
base_old=base_old,
|
||||
base_new=base_new,
|
||||
session=session_http,
|
||||
compare_mode=ep.get("compare_mode", "code_only"),
|
||||
)
|
||||
row = {
|
||||
"id": case_label,
|
||||
"name": call_name,
|
||||
"case_id": case_id,
|
||||
"method": pr.method,
|
||||
"path": pr.path,
|
||||
"old_status": pr.old_status,
|
||||
"new_status": pr.new_status,
|
||||
"match": pr.match,
|
||||
"message": pr.message,
|
||||
}
|
||||
request.config._parity_rows.append(row) # type: ignore
|
||||
assert pr.match, (
|
||||
f"{case_label} mismatch: {pr.message}\n"
|
||||
f"old_http={pr.old_status} new_http={pr.new_status}\n"
|
||||
f"old_head={pr.old_text[:500]!r}\nnew_head={pr.new_text[:500]!r}"
|
||||
)
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
"""全 catalog 双端对拍(仅 include_in_parity=true 的条目,与 test_parity_from_catalog 范围一致,但每接口独立用例)。"""
|
||||
|
||||
import pytest
|
||||
from parity.catalog_loader import endpoint_body as cb_body
|
||||
from parity.catalog_loader import include_in_parity as cb_parity
|
||||
from parity.catalog_loader import load as load_catalog
|
||||
from parity.client import call_both
|
||||
|
||||
|
||||
def pytest_generate_tests(metafunc):
|
||||
if "catalog_ep" not in metafunc.fixturenames:
|
||||
return
|
||||
cat_all = list((load_catalog() or {}).get("endpoints") or [])
|
||||
# 与 test_parity_from_catalog 对齐:全 catalog 用例同样尊重 include_in_parity
|
||||
cat = [ep for ep in cat_all if cb_parity(ep)]
|
||||
ids = [str(ep.get("id", i)) for i, ep in enumerate(cat)]
|
||||
metafunc.parametrize("catalog_ep", cat, ids=ids)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("two_instances_ready")
|
||||
@pytest.mark.live
|
||||
def test_parity_single_endpoint(
|
||||
request,
|
||||
base_old,
|
||||
base_new,
|
||||
session_http,
|
||||
catalog_ep: dict,
|
||||
):
|
||||
name = catalog_ep["id"]
|
||||
body = cb_body(catalog_ep)
|
||||
pr = call_both(
|
||||
name=catalog_ep.get("name", name),
|
||||
method=catalog_ep.get("method", "POST"),
|
||||
path=catalog_ep["path"],
|
||||
body=body,
|
||||
base_old=base_old,
|
||||
base_new=base_new,
|
||||
session=session_http,
|
||||
compare_mode=catalog_ep.get("compare_mode", "code_only"),
|
||||
)
|
||||
row = {
|
||||
"id": name,
|
||||
"name": catalog_ep.get("name", name),
|
||||
"method": pr.method,
|
||||
"path": pr.path,
|
||||
"old_status": pr.old_status,
|
||||
"new_status": pr.new_status,
|
||||
"match": pr.match,
|
||||
"message": pr.message,
|
||||
}
|
||||
request.config._parity_full_rows.append(row) # type: ignore
|
||||
assert pr.match, (
|
||||
f"{name} mismatch: {pr.message}\n"
|
||||
f"old_http={pr.old_status} new_http={pr.new_status}\n"
|
||||
f"old_head={pr.old_text[:500]!r}\nnew_head={pr.new_text[:500]!r}"
|
||||
)
|
||||
@@ -3,6 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from parity import compare as C
|
||||
from parity import body_variants as BV
|
||||
|
||||
|
||||
def test_normalize_equal():
|
||||
@@ -15,3 +16,26 @@ def test_business_code_from_cloudwalk_result():
|
||||
j = '{"code":"0","data":{}}'
|
||||
p = C.parse_json_loose(j)
|
||||
assert C.business_code(p) == "0"
|
||||
|
||||
|
||||
def test_deep_merge_nested():
|
||||
base = {"a": 1, "nested": {"x": 1, "y": 2}}
|
||||
patch = {"nested": {"y": 99}, "b": 2}
|
||||
m = BV.deep_merge(base, patch)
|
||||
assert m == {"a": 1, "b": 2, "nested": {"x": 1, "y": 99}}
|
||||
|
||||
|
||||
def test_iter_parity_request_cases_respects_env(monkeypatch):
|
||||
monkeypatch.delenv("ELEVATOR_PARITY_BOUNDARY", raising=False)
|
||||
ep = {
|
||||
"id": "x",
|
||||
"body": {"p": 1},
|
||||
"boundary_patches": [{"id": "zero", "patch": {"p": 0}}],
|
||||
}
|
||||
cases = list(BV.iter_parity_request_cases(ep))
|
||||
assert cases == [("default", {"p": 1})]
|
||||
|
||||
monkeypatch.setenv("ELEVATOR_PARITY_BOUNDARY", "1")
|
||||
cases2 = list(BV.iter_parity_request_cases(ep))
|
||||
assert cases2[0] == ("default", {"p": 1})
|
||||
assert cases2[1] == ("zero", {"p": 0})
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# CFR 输出体积大,默认不纳入 Git;本地生成后通过 cfr-from-cw-lib-current 使用
|
||||
cfr-from-cw-lib-*/
|
||||
!README.md
|
||||
@@ -0,0 +1,58 @@
|
||||
# V1 电梯模块反编译输出(CFR)
|
||||
|
||||
本目录由脚本生成,**勿手改**;重新生成会带时间戳子目录并更新 `cfr-from-cw-lib-current` 符号链接。
|
||||
|
||||
## 生成命令
|
||||
|
||||
```bash
|
||||
cd maven-cw-elevator-application
|
||||
./scripts/decompile_v1_elevator_jars.sh
|
||||
```
|
||||
|
||||
前提:
|
||||
|
||||
- 仓库根存在 `cw-elevator-application-V1.0.0.20211103/cw_lib/cw-elevator-application-{common,data,service,web}-1.0-SNAPSHOT.jar`
|
||||
- 仓库根存在 `artifacts/decompiled/v1-cfr-compare-20211103/cfr-0.152.jar`(或设置环境变量 `CFR_JAR`)
|
||||
|
||||
可选环境变量:
|
||||
|
||||
| 变量 | 含义 |
|
||||
|------|------|
|
||||
| `V1_RUN_DIR` | V1 解压目录绝对路径(默认:仓库根下 `cw-elevator-application-V1.0.0.20211103`) |
|
||||
| `CFR_JAR` | CFR jar 路径 |
|
||||
| `V1_DECOMP_OUT` | 输出根路径前缀(默认:`tools/v1-decompiled/cfr-from-cw-lib`,实际会追加 `-时间戳`) |
|
||||
| `DECOMPILE_V1_FAT_JAR=1` | 额外反编译 fat jar(耗时长、体积大) |
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
cfr-from-cw-lib-<timestamp>/
|
||||
MANIFEST.txt
|
||||
cw-elevator-application-common-1.0-SNAPSHOT/
|
||||
cn/cloudwalk/elevator/...
|
||||
cw-elevator-application-data-1.0-SNAPSHOT/
|
||||
cn/...
|
||||
...
|
||||
```
|
||||
|
||||
`cfr-from-cw-lib-current` → 最近一次生成目录。
|
||||
|
||||
## 与 V2 源码比对
|
||||
|
||||
**简要相似度报告**:
|
||||
|
||||
```bash
|
||||
python3 tools/elevator_api_parity/scripts/source_parity_scan.py
|
||||
```
|
||||
|
||||
→ `tools/elevator_api_parity/report/SOURCE-PARITY-BY-CLASS-decomp.md`
|
||||
|
||||
**全量差异梳理(推荐)**:按优先级分组 + 完整配对表 + JSON
|
||||
|
||||
```bash
|
||||
python3 tools/elevator_api_parity/scripts/v1_v2_diff_issues_report.py --json
|
||||
```
|
||||
|
||||
→ `report/V1-V2-DIFF-ISSUES.md`、同基名 `.json`
|
||||
|
||||
环境变量:`V1_DECOMP_ROOT`、`MV_ROOT`(默认为本 Maven 工程根)。
|
||||
@@ -0,0 +1 @@
|
||||
/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/v1-decompiled/cfr-from-cw-lib-20260428-125802
|
||||
+3006
File diff suppressed because it is too large
Load Diff
+28
@@ -0,0 +1,28 @@
|
||||
# Source-Aligned Decompiled Build Report
|
||||
|
||||
- UTC: `2026-04-28T14:27:59Z`
|
||||
- V1 base: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/tools/v1-decompiled/cfr-from-cw-lib-20260428-125802`
|
||||
- Maven root: `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application`
|
||||
|
||||
## Summary
|
||||
|
||||
| metric | count |
|
||||
|---|---:|
|
||||
| v2_replaced | 305 |
|
||||
| v1_only_kept | 0 |
|
||||
| v2_only_added | 25 |
|
||||
| total_output_java | 330 |
|
||||
|
||||
## Module stats
|
||||
|
||||
| module | v2_replaced | v1_only_kept | v2_only_added | output_java |
|
||||
|---|---:|---:|---:|---:|
|
||||
| cw-elevator-application-common | 32 | 0 | 1 | 33 |
|
||||
| cw-elevator-application-data | 79 | 0 | 5 | 84 |
|
||||
| cw-elevator-application-service | 150 | 0 | 16 | 166 |
|
||||
| cw-elevator-application-web | 44 | 0 | 3 | 47 |
|
||||
|
||||
## Notes
|
||||
|
||||
- 该目录可视作“源码优先的反编译校正版”:同路径优先采用 Maven 源码。
|
||||
- 若你要严格保留历史 jar 语义,请结合 `details` 过滤 `V2_REPLACED`/`V2_ONLY_ADDED`。
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.cloudwalk.elevator.annontation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 标记字段与达芬奇(Davinci)图片存储或展示相关的元信息。
|
||||
* <p>
|
||||
* 所在包名 {@code annontation} 为历史拼写,与既有引用保持一致,请勿单独重命名包路径。
|
||||
*/
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface DavinciPic {}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package cn.cloudwalk.elevator.cache;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
@Configuration
|
||||
public class CacheOverrideConfig {
|
||||
public static final String CACHE_NAME_APPLICATIONIDS = "ACS_Applicationids";
|
||||
public static final String CACHE_NAME_ACS_DEVICE_TYPES = "ACS_DeviceTypesCache";
|
||||
public static final String CACHE_NAME_ACS_DEVICE_TYPE_FEATURES = "ACS_DeviceTypeFeaturesCache";
|
||||
public static final String CACHE_NAME_ACS_DEVICE_ATTRS = "ACS_DeviceAttrsCache";
|
||||
public static final String CACHE_NAME_ACS_RECORD_STATISTICS = "ACS_RecordStatisticsCache";
|
||||
public static final String CACHE_NAME_ACS_DEVICE_TREE = "ACS_DeviceTreeCache";
|
||||
public static final String CACHE_NAME_ACS_AREA_TREE = "ACS_AreaTreeCache";
|
||||
public static final String CACHE_KEY_APPLICATION_IDS_PREFIX = "acs_applicationIds:";
|
||||
public static final String CACHE_KEY_ACS_DEVICE_TYPES_PREFIX = "acs_deviceTypes:";
|
||||
public static final String CACHE_KEY_ACS_DEVICE_TYPE_FEATURES_PREFIX = "acs_deviceTypeFeatures:";
|
||||
public static final String CACHE_KEY_ACS_EXPORT_PREFIX = "acs_export_prefix:";
|
||||
public static final String CACHE_KEY_ACS_DEVICE_ATTRS_PREFIX = "acs_deviceAttrs:";
|
||||
public static final String CACHE_KEY_ACS_RECORD_STATISTICS_PREFIX = "acs_recordStatistics:";
|
||||
public static final String CACHE_KEY_ACS_DEVICE_TREE_PREFIX = "acs_deviceTreeCache";
|
||||
public static final String CACHE_KEY_ACS_AREA_TREE_PREFIX = "acs_areaTreeCache:";
|
||||
|
||||
@Primary
|
||||
@Bean({"redisTemplate"})
|
||||
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
||||
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate();
|
||||
redisTemplate.setConnectionFactory(redisConnectionFactory);
|
||||
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
|
||||
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
||||
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
|
||||
redisTemplate.setValueSerializer((RedisSerializer)jackson2JsonRedisSerializer);
|
||||
redisTemplate.setKeySerializer((RedisSerializer)stringRedisSerializer);
|
||||
redisTemplate.afterPropertiesSet();
|
||||
return redisTemplate;
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
public class AcsConstants {
|
||||
public static final String SUCCESS_CODE = "00000000";
|
||||
public static final String SERVICE_CODE = "elevator-app";
|
||||
public static final Long ONE_DAY_MILLISECONDS = Long.valueOf(86400000L);
|
||||
public static final Long ONE_YEAR_MILLISECONDS = Long.valueOf(31536000000L);
|
||||
public static final String DEFAULT_CALLER = "defaultUserId";
|
||||
public static final String DEFAULT_CALLER_NAME = "defaultUserName";
|
||||
public static final String ACS_OPEN_DOOR_RECORD_EVENT_TOPIC = "ACS_OPEN_DOOR_RECORD_EVENT_TOPIC";
|
||||
public static final String ACS_BACKEND_REG_LOG_ID_KEY_PREFIX = "acs:backendRegLogId:";
|
||||
public static final String ACS_BACKEND_REG_EXPIRE_PREFIX = "acs:backendRegExpire:";
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
public class AcsLockConstants {
|
||||
public static final String LOCK_EXPORT_BUSINESSID_PREFIX = "AcsExport:";
|
||||
|
||||
public static final String LOCK_RECORD_STATISTICS_BUSINESSID_PREFIX = "AcsRecordStatistics:";
|
||||
|
||||
public static final String LOCK_BACKEND_REG_LOG_ID_PREFIX = "AcsBackendRegLogId:";
|
||||
|
||||
public static final String LOCK_URGENT_GROUP_DEVICE_ID_PREFIX = "AcsUrgentGroupDeviceIds:";
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "cloudwalk.elevator.common")
|
||||
public class ElevatorCwosConfig {
|
||||
private String relativePrefix;
|
||||
|
||||
public String getRelativePrefix() {
|
||||
return this.relativePrefix;
|
||||
}
|
||||
|
||||
public void setRelativePrefix(String relativePrefix) {
|
||||
this.relativePrefix = relativePrefix;
|
||||
}
|
||||
}
|
||||
+457
@@ -0,0 +1,457 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
public class ErrorCode {
|
||||
public static final String OTHER_ERROR = "00000001";
|
||||
|
||||
public static final String ID_IS_NULL = "53060410";
|
||||
|
||||
public static final String ID_ARRAY_IS_NULL = "53060411";
|
||||
|
||||
public static final String ADD_IMAGE_STORE_ERROR = "53060413";
|
||||
|
||||
public static final String ID_IS_ERROR = "53060414";
|
||||
|
||||
public static final String EDIT_IMAGE_STORE_IS_ERROR = "53060415";
|
||||
|
||||
public static final String IMAGE_STORE_REF_IS_ALL_NULL = "53060416";
|
||||
|
||||
public static final String IMAGFE_STORE_ORG_ID_ARRAY_IS_ERROR = "53060417";
|
||||
|
||||
public static final String IMAGFE_STORE_LABEL_ID_ARRAY_IS_ERROR = "53060418";
|
||||
|
||||
public static final String IMAGFE_STORE_PERSON_ID_ARRAY_IS_ERROR = "53060419";
|
||||
|
||||
public static final String IMAGFE_STORE_LABEL_ID_EXCLUDE_ARRAY_IS_ERROR = "53060420";
|
||||
|
||||
public static final String IMAGFE_STORE_PERSON_ID_EXCLUDE_ARRAY_IS_ERROR = "53060421";
|
||||
|
||||
public static final String IMAGE_STORE_DELETE_ERROR = "53060422";
|
||||
|
||||
public static final String IMAGE_STORE_NAME_IS_ERROR = "53060423";
|
||||
|
||||
public static final String ID_LENGTH_IS_ERROR = "53060424";
|
||||
|
||||
public static final String ORG_PARENT_NODE_IS_ERROR = "53060425";
|
||||
|
||||
public static final String GET_BUSINESS_NAME_IS_ERROR = "53060426";
|
||||
|
||||
public static final String PARENT_ID_LENGTH_IS_ERROR = "53060427";
|
||||
|
||||
public static final String FILE_UPLOAD_ERROR = "80014001";
|
||||
|
||||
public static final String FILE_UPLOAD_CONTROLLER_ERROR = "80014013";
|
||||
|
||||
public static final String FILE_TYPE_IS_INVALID = "53060429";
|
||||
|
||||
public static final String FILE_MAX_IS_ERROR = "53060428";
|
||||
|
||||
public static final String ROTATE_IMAGE_ERROR = "53060430";
|
||||
|
||||
public static final String EXTRACT_FEATURE_FAIL = "53060431";
|
||||
|
||||
public static final String FACE_DETECT_IS_EMPTY = "53060432";
|
||||
|
||||
public static final String FACE_DETECT_OVER_SIZE = "53060433";
|
||||
|
||||
public static final String IMAGE_IS_EMPTY = "53060434";
|
||||
|
||||
public static final String EXTRACT_FEATURE_EXCEPTION = "53060435";
|
||||
|
||||
public static final String EXTRACT_FEATURE_RESULT_IS_EMPTY = "53060436";
|
||||
|
||||
public static final String UPLOAD_SINGLE_FACE = "53060437";
|
||||
|
||||
public static final String GROUP_ID_IS_EMPTY = "53060438";
|
||||
|
||||
public static final String FACE_DETECT_EXCEPTION = "53060439";
|
||||
|
||||
public static final String FACE_DETECT_RESULT_IS_EMPTY = "53060440";
|
||||
|
||||
public static final String QUERY_ALL_GROUP_TOPN_FAIL = "53060441";
|
||||
|
||||
public static final String QUERY_EVERY_GROUP_TOPN_FAIL = "53060442";
|
||||
|
||||
public static final String QUERY_FEATURE_RESULT_IS_EMPTY = "53060443";
|
||||
|
||||
public static final String QUERY_FEATURE_RESULT_FAIL = "53060444";
|
||||
|
||||
public static final String IMAGE_UNDER_SIZE = "53060445";
|
||||
|
||||
public static final String IMAGE_PIXEL_UNDER_SIZE = "53060446";
|
||||
|
||||
public static final String ADD_FACE_FAIL = "53060447";
|
||||
|
||||
public static final String REMOVE_FACE_FAIL = "53060448";
|
||||
|
||||
public static final String FILE_MANAGER_READ_FILE_ERROR = "80014016";
|
||||
|
||||
public static final String FILE_MANAGER_DEL_ERROR = "80014017";
|
||||
|
||||
public static final String ADD_ORG_TYPE_ERROR = "53003800";
|
||||
|
||||
public static final String EDIT_ORG_TYPE_ERROR = "53003801";
|
||||
|
||||
public static final String DEL_ORG_TYPE_ERROR = "53003802";
|
||||
|
||||
public static final String ADD_ORG_TYPE_DUPLICATE_NAME = "53003803";
|
||||
|
||||
public static final String QUERY_ORG_TYPE_ERROR = "53003804";
|
||||
|
||||
public static final String PROPERTIES_DUPLICATE_NAME_ERROR = "53003805";
|
||||
|
||||
public static final String ADD_AREA_TYPE_ERROR = "53004800";
|
||||
|
||||
public static final String EDIT_AREA_TYPE_ERROR = "53004801";
|
||||
|
||||
public static final String DEL_AREA_TYPE_ERROR = "53004802";
|
||||
|
||||
public static final String ADD_AREA_TYPE_DUPLICATE_NAME = "53004803";
|
||||
|
||||
public static final String QUERY_AREA_TYPE_ERROR = "53004804";
|
||||
|
||||
public static final String AREA_TYPE_NAME_NOT_NULL = "53004806";
|
||||
|
||||
public static final String AREA_TYPE_NAME_LENGTH_INVAILD = "53004807";
|
||||
|
||||
public static final String AREA_TYPE_PRO_NAME_NOT_NULL = "53004810";
|
||||
|
||||
public static final String AREA_TYPE_PRO_REQUIRED_NOT_NULL = "53004811";
|
||||
|
||||
public static final String AREA_TYPE_PRO_REQUIRED_RANGE_INVAILD = "53004812";
|
||||
|
||||
public static final String AREA_TYPE_HAS_LOWER_DATA = "53004813";
|
||||
|
||||
public static final String AREA_TYPE_NOT_EDIT_DEFAULT = "53004815";
|
||||
|
||||
public static final String EXIST_AREA_WITH_TYPE = "53004854";
|
||||
|
||||
public static final String AREA_TYPE_PRO_ORDER_NOT_NULL = "53004816";
|
||||
|
||||
public static final String AREA_TYPE_PRO_ORDER_RANGE_INVAILD = "53004817";
|
||||
|
||||
public static final String QUERY_ORG_ERROR = "53003300";
|
||||
|
||||
public static final String TYPE_ID_IS_NULL = "53003301";
|
||||
|
||||
public static final String TYPE_ID_LENGTH_IS_ERROR = "53003302";
|
||||
|
||||
public static final String PARAM_LENGTH_IS_ERROR = "53003303";
|
||||
|
||||
public static final String EXIST_ORG_WITH_TYPE = "53003304";
|
||||
|
||||
public static final String ORG_ID_IS_NULL = "53003305";
|
||||
|
||||
public static final String ORG_PARENT_HSH_LOWER_LEVEL_ERROR = "53003306";
|
||||
|
||||
public static final String ORG_PARENT_ID_IS_NULL = "53003307";
|
||||
|
||||
public static final String ORG_LEVEL_IS_ERROR = "53003308";
|
||||
|
||||
public static final String ORG_NAME_IS_EXIST = "53003309";
|
||||
|
||||
public static final String ORG_ID_IS_ERROR = "53003310";
|
||||
|
||||
public static final String PERSON_ID_ARRAY_IS_ERROR = "53003311";
|
||||
|
||||
public static final String ORG_NAME_IS_NULL = "53003312";
|
||||
|
||||
public static final String ORG_YI_IS_NOT_DELETE = "53003313";
|
||||
|
||||
public static final String ORG_PARENT_IS_HAVING = "53003314";
|
||||
|
||||
public static final String ORG_CANNOT_DELETE = "53003315";
|
||||
|
||||
public static final String QZ_BUSINESS_ID_INVALID = "53014000";
|
||||
|
||||
public static final String QZ_PERSON_CODE_INVALID = "53014001";
|
||||
|
||||
public static final String QZ_PERSON_NAME_INVALID = "53014002";
|
||||
|
||||
public static final String QZ_PERSON_USER_NAME_INVALID = "53014003";
|
||||
|
||||
public static final String QZ_PERSON_PHONE_INVALID = "53014004";
|
||||
|
||||
public static final String QZ_PERSON_EMAIL_INVALID = "53014005";
|
||||
|
||||
public static final String QZ_PERSON_SYNC_ACCOUNT_INVALID = "53014006";
|
||||
|
||||
public static final String QZ_PERSON_CUSTOM_FIELD_INVALID = "53014007";
|
||||
|
||||
public static final String QZ_PERSON_ADD_ERROR = "53014008";
|
||||
|
||||
public static final String QZ_PERSON_EDIT_ERROR = "53014009";
|
||||
|
||||
public static final String QZ_PERSON_DEL_ERROR = "53014010";
|
||||
|
||||
public static final String QZ_PERSON_QUERY_ERROR = "53014011";
|
||||
|
||||
public static final String QZ_PERSON_CODE_DUPLICATE = "53014012";
|
||||
|
||||
public static final String QZ_PERSON_USER_NAME_DUPLICATE = "53014013";
|
||||
|
||||
public static final String QZ_PERSON_PHONE_DUPLICATE = "53014014";
|
||||
|
||||
public static final String QZ_PERSON_EMAIL_DUPLICATE = "53014015";
|
||||
|
||||
public static final String QZ_PERSON_FILED_LOSE = "53014016";
|
||||
|
||||
public static final String QZ_PERSON_FILED_INVALID = "53014017";
|
||||
|
||||
public static final String QZ_PERSON_FILED_NOT_EXISTS = "53014018";
|
||||
|
||||
public static final String QZ_PERSON_NO_SYSTEM_ID = "53014019";
|
||||
|
||||
public static final String QZ_PERSON_FILED_LABEL_ORGANIZATION_LOSE = "53014020";
|
||||
|
||||
public static final String QZ_PERSON_SOURCE_ILLEGAL = "53014021";
|
||||
|
||||
public static final String QZ_PERSON_PROPERTIES_CERT_LOSE = "53014022";
|
||||
|
||||
public static final String QZ_PERSON_CERT_ID_DUPLICATE = "53014023";
|
||||
|
||||
public static final String PERSON_ID_LIST_IS_EMPTY = "53014024";
|
||||
|
||||
public static final String IMAGE_ID_LIST_IS_EMPTY = "53014025";
|
||||
|
||||
public static final String IMAGE_ID_IS_EMPTY = "53014026";
|
||||
|
||||
public static final String QZ_SYSTEM_ID_VALUE_EMPTY = "53014027";
|
||||
|
||||
public static final String QZ_SYSTEM_ID_VALUE_DUPLICATE = "53014028";
|
||||
|
||||
public static final String PERSONNEL_ATTRIBUTES_ARE_NOT_SET = "53014029";
|
||||
|
||||
public static final String QZ_BATCH_ID_INVALID = "53014030";
|
||||
|
||||
public static final String QZ_BATCH_STATUS_INVALID = "53014031";
|
||||
|
||||
public static final String QZ_BATCH_ADD_ERROR = "53014032";
|
||||
|
||||
public static final String QZ_BATCH_QUERY_ERROR = "53014033";
|
||||
|
||||
public static final String QZ_BATCH_DETAIL_QUERY_ERROR = "53014034";
|
||||
|
||||
public static final String BATCH_IMPORT_INSERT_ERROR = "53014035";
|
||||
|
||||
public static final String BATCH_IMPORT_PROCESS_EXCEPTION = "53014036";
|
||||
|
||||
public static final String BATCH_IMPORT_ZIP_FILE_EMPTY = "53014037";
|
||||
|
||||
public static final String BATCH_IMPORT_UNZIP_FAILED = "53014038";
|
||||
|
||||
public static final String BATCH_IMPORT_EXCEL_FILE_NOTFOUND = "53014039";
|
||||
|
||||
public static final String BATCH_IMPORT_DATA_EMPTY = "53014040";
|
||||
|
||||
public static final String FILE_INIT_FAIL = "53014041";
|
||||
|
||||
public static final String FILE_FINISHI_FAIL = "53014042";
|
||||
|
||||
public static final String FILE_GET_FAIL = "53014043";
|
||||
|
||||
public static final String LABEL_NAME_IS_EXIST = "53003700";
|
||||
|
||||
public static final String LABEL_ID_IS_ERROR = "53003701";
|
||||
|
||||
public static final String LABEL_PAGE_IS_ERROR = "53003702";
|
||||
|
||||
public static final String QZ_LABEL_NAME_INVALID = "53003703";
|
||||
|
||||
public static final String QZ_LABEL_CODE_INVALID = "53003704";
|
||||
|
||||
public static final String LABEL_CODE_IS_EXIST = "53003705";
|
||||
|
||||
public static final String QZ_LABEL_ADD_TYPE_INVALID = "53003706";
|
||||
|
||||
public static final String QZ_LABEL_DEL_PERSON_RELATION = "53003707";
|
||||
|
||||
public static final String PERSON_PRO_NAME_NOT_NULL = "53014800";
|
||||
|
||||
public static final String PERSON_PRO_NAME_LENGTH_INVAILD = "53014801";
|
||||
|
||||
public static final String PERSON_PRO_TYPE_NOT_NULL = "53014802";
|
||||
|
||||
public static final String PERSON_PRO_TYPE_RANGE_INVAILD = "53014803";
|
||||
|
||||
public static final String PERSON_PRO_SYSACCOUNT_RANGE_INVAILD = "53014804";
|
||||
|
||||
public static final String PERSON_PRO_REQUIRED_RANGE_INVAILD = "53014805";
|
||||
|
||||
public static final String PERSON_PRO_ORDER_NOT_NULL = "53014806";
|
||||
|
||||
public static final String PERSON_PRO_REMINDER_NOT_NULL = "53014807";
|
||||
|
||||
public static final String PERSON_PRO_REMINDER_LENGTH_INVAILD = "53014808";
|
||||
|
||||
public static final String PERSON_PRO_ARRAYDATA_LENGTH_INVAILD = "53014809";
|
||||
|
||||
public static final String PERSON_PRO_MULTIPLE_RANGE_INVAILD = "53014810";
|
||||
|
||||
public static final String DEFAULT_ACCOUNT_CAN_NOT_CHANGE = "53014811";
|
||||
|
||||
public static final String REQUIRED_CAN_NOT_CHANGE = "53014812";
|
||||
|
||||
public static final String SWITCH_SIZE_PARAM_INVALID = "53014813";
|
||||
|
||||
public static final String SWITCH_BACKGROUND_OBJECT_INVALID = "53014814";
|
||||
|
||||
public static final String ORG_TYPE_NAME_NOT_NULL = "53003806";
|
||||
|
||||
public static final String ORG_TYPE_NAME_LENGTH_INVAILD = "53003807";
|
||||
|
||||
public static final String ORG_TYPE_LOWER_NOT_NULL = "53003808";
|
||||
|
||||
public static final String ORG_TYPE_LOWER_RANGE_INVAILD = "53003809";
|
||||
|
||||
public static final String ORG_TYPE_PRO_NAME_NOT_NULL = "53003810";
|
||||
|
||||
public static final String ORG_TYPE_PRO_REQUIRED_NOT_NULL = "53003811";
|
||||
|
||||
public static final String ORG_TYPE_PRO_REQUIRED_RANGE_INVAILD = "53003812";
|
||||
|
||||
public static final String ORG_TYPE_HAS_LOWER_DATA = "53003813";
|
||||
|
||||
public static final String ORG_TYPE_NOT_NEW_DEFAULT = "53003814";
|
||||
|
||||
public static final String ORG_TYPE_NOT_EDIT_DEFAULT = "53003815";
|
||||
|
||||
public static final String ORG_TYPE_PRO_ORDER_NOT_NULL = "53003816";
|
||||
|
||||
public static final String ORG_TYPE_PRO_ORDER_RANGE_INVAILD = "53003817";
|
||||
|
||||
public static final String CAT_NOT_EDIT_DEFAULT_TYPE = "53003818";
|
||||
|
||||
public static final String PERSON_NOT_EXIST = "53003819";
|
||||
|
||||
public static final String PERSON_IMAGE_SCORE_FAILE = "53003820";
|
||||
|
||||
public static final String ORG_SEARCH_PARAM_FAILE = "53003821";
|
||||
|
||||
public static final String PERSON_REGISTRY_STATUS_IS_NULL = "53014500";
|
||||
|
||||
public static final String PERSON_REGISTRY_DEVICESTATUS_IS_NULL = "53014501";
|
||||
|
||||
public static final String PERSON_REGISTRY_CODESTATUS_IS_NULL = "53014502";
|
||||
|
||||
public static final String PERSON_REGISTRY_PROPERTY_IS_NULL = "53014503";
|
||||
|
||||
public static final String PERSON_REGISTRY_DEVICE_IS_NULL = "53014504";
|
||||
|
||||
public static final String PERSON_REGISTRY_STATUS_INVALID = "53014505";
|
||||
|
||||
public static final String PERSON_REGISTRY_DEVICESTATUS_INVALID = "53014506";
|
||||
|
||||
public static final String PERSON_REGISTRY_CODESTATUS_INVALID = "53014507";
|
||||
|
||||
public static final String PERSON_REGISTRY_PRO_ID_LIST_IS_ERROR = "53014508";
|
||||
|
||||
public static final String PERSON_REGISTRY_PRO_NAME_IS_REQUIRED = "53014509";
|
||||
|
||||
public static final String PERSON_REGISTRY_PRO_ORG_LABEL_IS_REQUIRED = "53014510";
|
||||
|
||||
public static final String PERSON_REGISTRY_PRO_IS_REQUIRED = "53014511";
|
||||
|
||||
public static final String PERSON_REGISTRY_ORG_IDS_IS_ERROR = "53014512";
|
||||
|
||||
public static final String PERSON_REGISTRY_LABEL_IDS_IS_ERROR = "53014513";
|
||||
|
||||
public static final String PERSON_REGISTRY_DEVICE_IS_ERROR = "53014514";
|
||||
|
||||
public static final String PERSON_REGISTRY_ADD_FAIL = "53014515";
|
||||
|
||||
public static final String PERSON_REGISTRY_SAVE_FAIL = "53014516";
|
||||
|
||||
public static final String PERSON_REGISTRY_IS_NULL = "53014517";
|
||||
|
||||
public static final String PERSON_REGISTRY_STATUS_IS_CLOSED = "53014518";
|
||||
|
||||
public static final String PERSON_REGISTRY_DEVICE_IS_NOT_ADD = "53014519";
|
||||
|
||||
public static final String PERSON_REGISTRY_DETAIL_FAIL = "53014520";
|
||||
|
||||
public static final String PERSON_REGISTRY_PRO_LIST_FAIL = "53014521";
|
||||
|
||||
public static final String PERSON_REGISTRY_UNIQUE_PRO_IS_NULL = "53014522";
|
||||
|
||||
public static final String PERSON_REGISTRY_UNIQUE_PRO_FAIL = "53014523";
|
||||
|
||||
public static final String PERSON_PRO_IS_NULL = "53014524";
|
||||
|
||||
public static final String PERSON_CERT_PRO_IS_NULL = "53014525";
|
||||
|
||||
public static final String CARDID_NOT_BIND_PRO = "53014526";
|
||||
|
||||
public static final String NAME_NOT_BIND_PRO = "53014527";
|
||||
|
||||
public static final String BIND_PRO_ONE_TO_MANY = "53014528";
|
||||
|
||||
public static final String DEFAULT_PRO_ORG_LABEL_IS_REQUIRED = "53014529";
|
||||
|
||||
public static final String PERSON_REGISTRY_TYPE_INVALID = "53014530";
|
||||
|
||||
public static final String QUERY_DISTRICT_TREE_FAIL = "53014600";
|
||||
|
||||
public static final String QUERY_DEVICE_LIST_FAIL = "53014700";
|
||||
|
||||
public static final String DEVICE_ID_IS_NULL = "53014701";
|
||||
|
||||
public static final String QUERY_PERSON_GROUP_RELATIONS_FAIL = "53014702";
|
||||
|
||||
public static final String QUERY_QR_CODE_URL_FAIL = "53014900";
|
||||
|
||||
public static final String PERSON_AUDIT_PARAM_SOURCE = "53060533";
|
||||
|
||||
public static final String PERSON_AUDIT_DEVICE_FORBID = "53060534";
|
||||
|
||||
public static final String PERSON_AUDIT_ADD_EXCEPTION = "53060535";
|
||||
|
||||
public static final String PERSON_AUDIT_ID_INVALID = "53060536";
|
||||
|
||||
public static final String PERSON_AUDIT_ID_ISNULL = "53060537";
|
||||
|
||||
public static final String PERSON_AUDIT_QUERY_FAILED = "53060538";
|
||||
|
||||
public static final String PERSON_AUDIT_APPLY_FAILED = "53060539";
|
||||
|
||||
public static final String PERSON_AUDIT_PAGE_FAILED = "53060540";
|
||||
|
||||
public static final String PERSON_AUDIT_REGISTRY_SETTING_FAILED = "53060541";
|
||||
|
||||
public static final String PERSON_AUDIT_DEVICECODE_EMPTY = "53060542";
|
||||
|
||||
public static final String PERSON_AUDIT_DEVICE_INVALID = "53060543";
|
||||
|
||||
public static final String PERSON_AUDIT_UPLOAD_BASE64_EMPTY = "53060544";
|
||||
|
||||
public static final String PERSON_AUDIT_CHECK_NAME_EMPTY = "53060545";
|
||||
|
||||
public static final String PERSON_AUDIT_CHECK_WRONG_CAPTCHA = "53060546";
|
||||
|
||||
public static final String PERSON_AUDIT_UNIQUE_PROPERTY_ERROR = "53060547";
|
||||
|
||||
public static final String PERSON_AUDIT_QUERY_AUDIT_EMPTY = "53060548";
|
||||
|
||||
public static final String PERSON_AUDIT_AGREE_CAN_NOT_EDIT = "53060549";
|
||||
|
||||
public static final String AREA_PARENT_ID_IS_NULL = "53015100";
|
||||
|
||||
public static final String AREA_PARENT_HSH_LOWER_LEVEL_ERROR = "53015101";
|
||||
|
||||
public static final String AREA_PARENT_IS_HAVING = "53015102";
|
||||
|
||||
public static final String AREA_NAME_IS_EXIST = "53015103";
|
||||
|
||||
public static final String AREA_ID_IS_ERROR = "53015104";
|
||||
|
||||
public static final String AREA_PARENT_NODE_IS_ERROR = "53015105";
|
||||
|
||||
public static final String AREA_YI_IS_NOT_DELETE = "53015106";
|
||||
|
||||
public static final String AREA_TYPE_ID_IS_NULL = "53015107";
|
||||
|
||||
public static final String UNIT_ID_ARRAY_IS_ERROR = "53015108";
|
||||
|
||||
public static final String QUERY_AREA_ERROR = "53015109";
|
||||
|
||||
public static final String DETAIL_AREA_ERROR = "53015110";
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
public class FeignRemoteConfig {
|
||||
public static final String PLATFORM_USER_ID = "platformuserid";
|
||||
|
||||
public static final String LOGIN_ID = "loginid";
|
||||
|
||||
public static final String BUSINESS_ID = "businessid";
|
||||
|
||||
public static final String USER_NAME = "username";
|
||||
|
||||
public static final String APPLICATION_ID = "applicationid";
|
||||
|
||||
public static final String AUTHORIZATION = "authorization";
|
||||
|
||||
public static final String SERVICE_CODE = "elevator-app";
|
||||
}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
import cn.cloudwalk.cloud.context.CloudwalkCallContext;
|
||||
import cn.cloudwalk.cloud.session.extend.DefaultExtendContext;
|
||||
import cn.cloudwalk.elevator.context.CloudWalkExtendContextValue;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class FeignThreadLocalUtil {
|
||||
private static ThreadLocal<Map<String, String>> threadLocal = new ThreadLocal<>();
|
||||
|
||||
public static void set(Map<String, String> t) {
|
||||
threadLocal.remove();
|
||||
threadLocal.set(t);
|
||||
}
|
||||
|
||||
public static Map<String, String> get() {
|
||||
return threadLocal.get();
|
||||
}
|
||||
|
||||
public static void remove() {
|
||||
threadLocal.remove();
|
||||
}
|
||||
|
||||
public static Map<String, String> getRequestHeader(HttpServletRequest request) {
|
||||
Map<String, String> map = new ConcurrentHashMap<>(10);
|
||||
if (null != request.getHeader("platformuserid")) {
|
||||
map.put("platformuserid", request.getHeader("platformuserid"));
|
||||
}
|
||||
if (null != request.getHeader("loginid")) {
|
||||
map.put("loginid", request.getHeader("loginid"));
|
||||
}
|
||||
if (null != request.getHeader("businessid")) {
|
||||
map.put("businessid", request.getHeader("businessid"));
|
||||
}
|
||||
if (null != request.getHeader("username")) {
|
||||
map.put("username", request.getHeader("username"));
|
||||
}
|
||||
if (null != request.getHeader("applicationid")) {
|
||||
map.put("applicationid", request.getHeader("applicationid"));
|
||||
}
|
||||
if (null != request.getHeader("authorization")) {
|
||||
map.put("authorization", request.getHeader("authorization"));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
public static Map<String, String> getDefaultReqesutHeader(String businessId) {
|
||||
Map<String, String> map = new ConcurrentHashMap<>(2);
|
||||
map.put("businessid", businessId);
|
||||
map.put("username", "default");
|
||||
return map;
|
||||
}
|
||||
|
||||
public static void setRequestHeader(Map<String, String> headerMap) {
|
||||
set(headerMap);
|
||||
}
|
||||
|
||||
public static Map<String, String> getDefaultRequestHeader(CloudwalkCallContext context) {
|
||||
Map<String, String> map = new HashMap<>(10);
|
||||
DefaultExtendContext<CloudWalkExtendContextValue> extendContext =
|
||||
(DefaultExtendContext<CloudWalkExtendContextValue>)context.getExt();
|
||||
map.put("platformuserid", context.getUser().getCaller());
|
||||
map.put("loginid", ((CloudWalkExtendContextValue)extendContext.getValue()).getLoginId());
|
||||
map.put("businessid", context.getCompany().getCompanyId());
|
||||
map.put("username",
|
||||
StringUtils.isEmpty(context.getUser().getCallerName()) ? "default" : context.getUser().getCallerName());
|
||||
map.put("applicationid", context.getApplicationId());
|
||||
map.put("authorization", ((CloudWalkExtendContextValue)extendContext.getValue()).getAuthorization());
|
||||
return map;
|
||||
}
|
||||
|
||||
public static void setRequestHeader(CloudwalkCallContext context) {
|
||||
set(getDefaultRequestHeader(context));
|
||||
}
|
||||
|
||||
/**
|
||||
* 在有界线程池等子线程中调用 Feign 前,必须为当前线程设置与 {@code context} 一致的请求头 ThreadLocal; 调用结束后恢复/清理,避免池化线程泄漏或串扰。
|
||||
*/
|
||||
public static <T> T callWithContext(CloudwalkCallContext context, Callable<T> action) throws Exception {
|
||||
Map<String, String> previous = get();
|
||||
try {
|
||||
setRequestHeader(context);
|
||||
return action.call();
|
||||
} finally {
|
||||
if (previous != null) {
|
||||
set(previous);
|
||||
} else {
|
||||
remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package cn.cloudwalk.elevator.config;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ImageStoreConstants {
|
||||
public static final short IS_NOT_DEL = 0;
|
||||
public static final short IS_DEL = 1;
|
||||
public static final int ASSOCIATED_ACTION_INCLUDE = 0;
|
||||
public static final int ASSOCIATED_ACTION_EXCLUDE = 1;
|
||||
public static final int ASSOCIATED_OBJECT_ORG_TYPE = 1;
|
||||
public static final int ASSOCIATED_OBJECT_LABEL_TYPE = 2;
|
||||
public static final int ASSOCIATED_OBJECT_PERSON_TYPE = 3;
|
||||
public static final int ASSOCIATED_OBJECT_MATCHPATTERN_TYPE = 4;
|
||||
public static final int ASSOCIATED_OBJECT_IMAGE_STORE_TYPE = 5;
|
||||
public static final String COMMON_BUSINESS_ID = "cloudwalk";
|
||||
public static final Integer COMMON_PROPERTIES_STATUS = Integer.valueOf(99);
|
||||
public static final Integer COMMON_UNIT_PROPERTIES_STATUS = Integer.valueOf(98);
|
||||
public static final Integer COMMON_PARK_PROPERTIES_STATUS = Integer.valueOf(97);
|
||||
private static final List<String> CUST_PROPERTIES = Arrays.asList(new String[] {"ext1", "ext2", "ext3", "ext4",
|
||||
"ext5", "ext6", "ext7", "ext8", "ext9", "ext10", "ext11", "ext12", "ext13", "ext14", "ext15", "ext16", "ext17",
|
||||
"ext18", "ext19", "ext20", "ext21", "ext22", "ext23", "ext24", "ext25", "ext26", "ext27", "ext28", "ext29",
|
||||
"ext30", "ext31", "ext32", "ext33", "ext34", "ext35", "ext36", "ext37", "ext38", "ext39", "ext40"});
|
||||
public static final String PERSON_PROPERTY_USER_NAME = "userName";
|
||||
|
||||
public static List<String> getCustProperties() {
|
||||
return CUST_PROPERTIES;
|
||||
}
|
||||
|
||||
public static final String PERSON_PROPERTY_PHONE = "phone";
|
||||
public static final String PERSON_PROPERTY_EMAIL = "email";
|
||||
public static final String COMPARE_PICTURE = "comparePicture";
|
||||
public static final String PERSON_PROPERTY_PERSON_CODE = "personCode";
|
||||
public static final String IC_CAED_NO = "icCardNo";
|
||||
public static final String IC_CAED_TYPE = "icCardType";
|
||||
public static final String FLOORS = "floors";
|
||||
public static final String PROPERTY_CODE = "code";
|
||||
public static final String PROPERTY_HAS_REQUIRED = "hasRequired";
|
||||
public static final int PROPERTY_REQUIRED = 1;
|
||||
public static final int PROPERTY_UNREQUIRED = 0;
|
||||
public static final String PERSON_PROPERTY_NAME = "name";
|
||||
public static final String PERSON_PROPERTY_ORGANIZATIONIDS = "organizationIds";
|
||||
public static final String PERSON_PROPERTY_LABELIDS = "labelIds";
|
||||
public static final String CREATE_SYS_ACCOUNT_CODE = "createSysAccount";
|
||||
public static final String CREATE_SYS_ACCOUNT_NAME = "同步创建账号";
|
||||
public static final String SYS_ACCOUNT_ID_CODE = "sysAccountId";
|
||||
public static final String SYS_ACCOUNT_ID_NAME = "同步创建账号系统ID";
|
||||
public static final Integer AGREE = Integer.valueOf(0);
|
||||
public static final String SYSTEM_USER = "system";
|
||||
public static final String IMAGE_STORE_ID = "imageStoreId";
|
||||
public static final String PASS_CRONS = "passCrons";
|
||||
public static final short PERSON_DELETED = -1;
|
||||
public static final short PERSON_VALIDATE = 0;
|
||||
public static final short PERSON_INVALIDATE = 1;
|
||||
public static final short DEVICE_PERSON_VALIDATE = 1;
|
||||
public static final short DEVICE_PERSON_INVALIDATE = 0;
|
||||
public static final Integer MAX_FILE = Integer.valueOf(3145728);
|
||||
public static final String SYSTEM_GROUP_CREATE_USER_ID = "group";
|
||||
public static final int PERSON_ACTION_DELETE = -1;
|
||||
public static final int PERSON_ACTION_ADD = 0;
|
||||
public static final int PERSON_ACTION_UPDATE = 1;
|
||||
public static final short GROUP_MODEL_STATUS_NO_IMG = 0;
|
||||
public static final int PERSON_VALIDATE_UNPROCESSED = 0;
|
||||
public static final int PERSON_VALIDATE_PROCESSED = 1;
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package cn.cloudwalk.elevator.context;
|
||||
|
||||
public class CloudWalkExtendContextValue {
|
||||
private String loginId;
|
||||
private String authorization;
|
||||
|
||||
public String getLoginId() {
|
||||
return this.loginId;
|
||||
}
|
||||
|
||||
public void setLoginId(String loginId) {
|
||||
this.loginId = loginId;
|
||||
}
|
||||
|
||||
public String getAuthorization() {
|
||||
return this.authorization;
|
||||
}
|
||||
|
||||
public void setAuthorization(String authorization) {
|
||||
this.authorization = authorization;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsApplicationSourceEnum {
|
||||
ACCESS_CONTROL("ACCESS_CONTROL", "门禁应用"), CWOS_PORTAL("CWOS_PORTAL", "平台应用");
|
||||
|
||||
private final String code;
|
||||
private final String name;
|
||||
|
||||
AcsApplicationSourceEnum(String code, String name) {
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public static AcsApplicationSourceEnum getEnumByCode(String code) {
|
||||
for (AcsApplicationSourceEnum item : values()) {
|
||||
if (code.equals(item.code)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsDeviceIdentifyTypeEnum {
|
||||
FRONT_REG(Integer.valueOf(0), "前端识别"), BACKEND_REG(Integer.valueOf(1), "后端识别");
|
||||
|
||||
private Integer code;
|
||||
private String name;
|
||||
|
||||
AcsDeviceIdentifyTypeEnum(Integer code, String name) {
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public static AcsDeviceIdentifyTypeEnum getEnumByCode(Integer code) {
|
||||
for (AcsDeviceIdentifyTypeEnum item : values()) {
|
||||
if (code.equals(item.getCode())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsDeviceQueryTypeEnum {
|
||||
QUERY_MAIN(Integer.valueOf(1), "只查询主设备"), QUERY_MAIN_AND_SUB(Integer.valueOf(2), "查询主设备及其子设备");
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
AcsDeviceQueryTypeEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static AcsDeviceQueryTypeEnum getEnumByCode(Integer code) {
|
||||
for (AcsDeviceQueryTypeEnum item : values()) {
|
||||
if (code.equals(item.getCode())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public enum AcsDeviceSettingEnum {
|
||||
QUALITY_SCORE("qualityScore", "人脸抓拍质量分", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
TEMP_THRESHOLD("tempThreshold", "温度报警阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
TEMP_MIN("tempMin", "温度最低值", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
MASK_THRESHOLD("maskThreshold", "口罩阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
LIVE_STATE("liveState", "活体检测开关", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
TEMP_STATE("tempState", "温度控制开关", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
FACE_SIZE_MIN("faceSizeMin", "人脸最小尺寸", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
FACE_SIZE_MAX("faceSizeMax", "人脸最大尺寸", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
FACE_ONE_THRESHOLD("faceOneThreshold", "人脸1:1识别阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
FACE_MANY_THRESHOLD("faceManyThreshold", "人脸1:N识别阈值", AcsApplicationSourceEnum.CWOS_PORTAL),
|
||||
ACS_FACE_REG_THRESHOLD("ACS_FACE_REG_THRESHOLD", "人脸抓拍识别阈值", AcsApplicationSourceEnum.ACCESS_CONTROL);
|
||||
|
||||
private String code;
|
||||
private String remark;
|
||||
private AcsApplicationSourceEnum source;
|
||||
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getRemark() {
|
||||
return this.remark;
|
||||
}
|
||||
|
||||
public AcsApplicationSourceEnum getSource() {
|
||||
return this.source;
|
||||
}
|
||||
|
||||
AcsDeviceSettingEnum(String code, String remark, AcsApplicationSourceEnum source) {
|
||||
this.code = code;
|
||||
this.remark = remark;
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public static AcsDeviceSettingEnum getEnumByCode(String code) {
|
||||
for (AcsDeviceSettingEnum item : values()) {
|
||||
if (code.equals(item.code)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static List<AcsDeviceSettingEnum> getEnumBySource(String source) {
|
||||
List<AcsDeviceSettingEnum> list = new ArrayList<>();
|
||||
for (AcsDeviceSettingEnum item : values()) {
|
||||
if (source.equals(item.source.getCode())) {
|
||||
list.add(item);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsOpenDoorStatusEnum {
|
||||
INIT(Integer.valueOf(0), "初始化"), SUCESS(Integer.valueOf(1), "成功"), FAIL(Integer.valueOf(2), "失败");
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
AcsOpenDoorStatusEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static AcsOpenDoorStatusEnum getEnumByCode(Integer code) {
|
||||
for (AcsOpenDoorStatusEnum item : values()) {
|
||||
if (code.equals(item.getCode())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsOperateStatusEnum {
|
||||
INIT(Integer.valueOf(0), "初始化"), MATCHED(Integer.valueOf(1), "已匹配");
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
AcsOperateStatusEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static AcsOperateStatusEnum getEnumByCode(Integer code) {
|
||||
for (AcsOperateStatusEnum item : values()) {
|
||||
if (code.equals(item.getCode())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsOperateTypeEnum {
|
||||
REMOTE_OPEN_DOOR("REMOTE_OPEN_DOOR", "远程开门"), QRCODE_OPEN_DOOR("QRCODE_OPEN_DOOR", "小程序扫码开门");
|
||||
|
||||
private String code;
|
||||
private String message;
|
||||
|
||||
AcsOperateTypeEnum(String code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static AcsOperateTypeEnum getEnumByCode(String code) {
|
||||
for (AcsOperateTypeEnum item : values()) {
|
||||
if (code.equals(item.getCode())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package cn.cloudwalk.elevator.em;
|
||||
|
||||
public enum AcsPassTypeEnum {
|
||||
LONG_TIME(Integer.valueOf(0), "长期"), AUTO_PASS(Integer.valueOf(1), "自定义时间"), PASS_TIME(Integer.valueOf(2), "通行时间段");
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
|
||||
AcsPassTypeEnum(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static YesNoTypeEnum getEnumByCode(Integer code) {
|
||||
for (YesNoTypeEnum item : YesNoTypeEnum.values()) {
|
||||
if (code.equals(item.getCode())) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user