feat: add component-organization decompiled Maven module

- Reactor POM with 4 sub-modules (interface/data/service/web)
- all-lib/ with 255 extracted JARs from original fat JAR
- .m2-isolated/ repo with 252 installed JARs
- interface module: BUILD SUCCESS (325 classes)
- data module: BUILD SUCCESS (120 classes)
- service module: 200 type errors (CFR decompilation artifacts)
- install-libs.sh for isolated repo setup
- Feign fallback inner classes separated
This commit is contained in:
反编译工作区
2026-05-05 22:36:52 +08:00
parent 3cc487cd3b
commit 18810ef9c6
1850 changed files with 6690 additions and 741 deletions
@@ -0,0 +1,170 @@
# 组织服务组件编译方案评估
**日期**2026-05-05
**来源**ninca-common-component-organization-V2.9.2_20210730.jar
---
## 1. 原始依赖环境
| 项目 | 值 |
|------|-----|
| Spring Boot | 1.5.17.RELEASE |
| Spring Cloud | Edgware.SR3 |
| Spring Framework | 4.3.29.RELEASE |
| JDK | 1.8 |
| Servlet | 3.1.0 (javax) |
---
## 2. 反编译模块结构
```
maven-ninca-common-component-organization/
├── cwos-component-organization-interface-v2.9.2_xinghewan/ # 接口 + DTO (无外部依赖)
├── cwos-component-organization-data-v2.9.2_xinghewan/ # DAO + Entity (依赖 interface)
├── cwos-component-organization-service-v2.9.2_xinghewan/ # 业务逻辑 (依赖 data + interface)
└── cwos-component-organization-web-v2.9.2_xinghewan/ # Controller (依赖 service)
```
**依赖链**web → service → data → interface
---
## 3. 外部依赖分析
### 3.1 可直接复用的 V2 Maven 模块
| 依赖 | 来源模块 | 状态 |
|------|---------|------|
| cloudwalk-common-result | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-serial | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-service | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-data | **无对应模块** | ❌ 需新建 |
| cloudwalk-device-manager-common | maven-cloudwalk-device-manager | ✅ 已有 |
| cloudwalk-device-manager-interface | maven-cloudwalk-device-manager | ✅ 已有 |
| cloudwalk-device-sdk-interface | maven-cloudwalk-device-sdk | ✅ 已有 |
| cloudwalk-device-sdk-protocol-entity | maven-cloudwalk-device-sdk | ✅ 已有 |
| cwos-common-aks-interface | maven-cwos-common-aks | ✅ 已有 |
| cwos-device-authentication-interface | maven-cwos-device-authentication | ✅ 已有 |
| cwos-component-resource-* | maven-cwos-resource | ✅ 已有 |
| davinci-manager-* | maven-cloudwalk-intelligent-davinci-manager | ✅ 已有 |
| cwos-sdk-event | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-result/web/serial | maven-cloudwalk-legacy-public | ✅ 已有 |
### 3.2 缺失的 CloudWalk 内部依赖
这些 JAR 存在于原始 fat JAR 的 `BOOT-INF/lib/` 中,但本地没有对应的 Maven 模块:
| 依赖 | 说明 | 数量 |
|------|------|------|
| cn.cloudwalk.client.aggregate.* | 聚合服务接口 (cwos-core-aggregate-interface) | ~30 个类 |
| cn.cloudwalk.client.account.* | 账户服务接口 (cwos-component-account-interface) | ~15 个类 |
| cn.cloudwalk.client.resource.* | 资源服务接口 (cwos-component-resource-interface) | ~20 个类 |
| cn.cloudwalk.client.device.mgn.* | 设备管理原子接口 (cwos-core-device-mgn-atomic-interface) | ~10 个类 |
| cn.cloudwalk.client.device.processor.* | 设备处理器接口 (cwos-device-processor-interface) | ~5 个类 |
| cn.cloudwalk.rest.* | REST 客户端 (cwos-component-*-rest) | ~20 个类 |
| cn.cloudwalk.task.* | 任务引擎 (ai-cloud-task-*) | ~10 个类 |
| ninca-common-message-center | 消息中心接口 | ~5 个类 |
| 其他 | pineappine, aliyun, opencv 等 | ~10 个类 |
**合计缺失约 125 个外部类引用。**
### 3.3 移植可行性判断
| 依赖组 | 能否从已有 JAR 提取 | 工作量 |
|--------|-------------------|--------|
| cn.cloudwalk.client.aggregate.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.client.account.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.client.resource.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.rest.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| ai-cloud-task-* | ✅ JAR 在 lib/ 中 | 低 |
| 第三方 (opencv, aliyun 等) | ✅ 直接从 lib/ 提取 | 低 |
---
## 4. 三种编译方案
### 方案 A:完整 Maven 多模块(推荐)
```
maven-ninca-common-component-organization/
├── pom.xml # reactor POM
├── cwos-component-organization-interface/
│ └── pom.xml # 继承 reactor
├── cwos-component-organization-data/
│ └── pom.xml
├── cwos-component-organization-service/
│ └── pom.xml
└── cwos-component-organization-web/
└── pom.xml
```
**步骤:**
1. 创建 reactor POM,继承 Spring Boot 1.5.17 parent
2. 从原始 JAR 的 `BOOT-INF/lib/` 提取所有缺失的 CloudWalk JAR
3.`mvn install:install-file` 安装到本地 .m2 仓库
4. 各子模块 POM 声明依赖
**优点**:可真正编译、可 IDE 索引、可验证代码正确性
**缺点**:工作量大(~80 个 JAR 需要处理);版本与 V2 主线可能不一致
### 方案 B:混合方案(实用主义)
```
maven-ninca-common-component-organization/
├── pom.xml # 聚合 POM
├── organization-interface/
│ └── pom.xml # 仅 interface 模块可编译
└── organization-libs/ # 存放 lib JAR
└── lib/*.jar # 直接从原始 JAR 提取
```
**步骤:**
1. 仅 interface 模块完全 Maven 化(纯 DTO,无外部依赖)
2. data/service/web 模块标记为 `pom``jar`,依赖通过 `system` scope 引用 lib/ 目录
3. 从原始 JAR 的 `BOOT-INF/lib/` 复制所有 JAR 到 `organization-libs/lib/`
**优点**:interface 可编译;剩余模块至少可 IDE 打开
**缺点**system scope 不可传递;不适合 CI 构建
### 方案 C:纯参考(不编译)
保持当前状态(已清理的反编译源码 + 中文注释),仅用于:
- 代码走查和业务逻辑分析
- Person detail → floorList 调用链追踪
- 策略需求的功能验证
**优点**:零工作量
**缺点**:不能编译验证、IDE 报错
---
## 5. 最终决策:不编译,直接用原始 JAR
### 结论
反编译源码仅作为**走查参考**,不进行 Maven 化编译。任何需要依赖组织服务的项目,直接引用原始 JAR:
```
源码/maven-cw-elevator-application/releases/cw-elevator-application-v2.0.10-.../org-service/.../ninca-common-component-organization-V2.9.2_20210730.jar
```
### 理由
| 考量 | 说明 |
|------|------|
| 复杂度 | 避免引入 80+ 个依赖 JAR 的版本管理问题 |
| 维护成本 | 反编译源码不改动、不编译,永远与原始 JAR 一致 |
| 目标明确 | 仅用于走查 `floorList` 生成逻辑,不需要编译 |
| 引用方式 | 需要时通过 `system` scope 或直接解压查看 |
### 反编译源码的定位
```
maven-ninca-common-component-organization/
→ 走查参考(已清理 CFR 痕迹 + 中文注释 + Unicode 转中文)
→ 不参与构建
→ 不改动
→ 与原始 JAR 字节码保持语义一致(已验证 56/56 方法匹配)
```