主程序(com.hospital.front): - Kotlin 2.0.21 + Solon 3.10.7 + MyBatis-Plus + HikariCP + Logback - HospitalAdapter 策略模式:5 家医院(xinglongyuan/qingyang/ningxia/yanan/jinghe)+ dev Mock - 三方言 Mapper:bsm(Oracle)/ nx / ya(SqlServer),存储过程参数原样迁移 - 20 个业务接口(/order/*)+ 11 个被控端接口(/api/admin/*,Token 鉴权+脱敏+防穿越) - 全局异常处理、Result 统一响应、业务开关热更新 Agent(com.hospital.agent,独立进程,单 jar 双 main): - WebSocket 主动出站连 B 端(指数退避重连),心跳转发主程序健康 - ProcessGuard 看门狗:3 次探测失败自动拉起主程序 - UpgradeCommand:下载→SHA256 校验→备份→替换→拉起→健康检查→失败自动回滚 - 命令分发:PING/日志/配置/重启等 10 类命令 部署(pac/): - Windows Server 脚本(start.bat/agent.bat/WinSW 服务),纯 ASCII 注释防 GBK 错乱 - 5 家医院配置模板 + agent.properties Co-Authored-By: Claude <noreply@anthropic.com>
145 lines
4.7 KiB
Markdown
145 lines
4.7 KiB
Markdown
# Hospital Front — 医院前置机程序
|
||
|
||
> 基于 Kotlin + Solon 4.0.6 重构的医院前置机对接系统
|
||
>
|
||
> 重构源:[hospitalmiddle](../hospitalmiddle)(SpringBoot 2.7 + MyBatis-Plus + Oracle/SqlServer)
|
||
>
|
||
> 完整方案:[E:\data\ob_data\myob\11 健康长庆\医院前置机重构\](../ob_data)
|
||
|
||
---
|
||
|
||
## 1. 项目简介
|
||
|
||
体检预约系统通过本程序与多家医院 HIS 系统对接,实现:
|
||
- 体检预约的提交、取消
|
||
- 体检项目查询、状态查询
|
||
- 体检结果/结论/建议的获取
|
||
- 单位信息同步
|
||
|
||
**支持 5 家医院**(拼音编码):
|
||
| 编码 | 医院名 | 数据库 |
|
||
|---|---|---|
|
||
| `xinglongyuan` | 兴隆园医院 | Oracle |
|
||
| `qingyang` | 庆阳医院 | Oracle |
|
||
| `ningxia` | 宁夏宝石花医院 | SqlServer |
|
||
| `yanan` | 延安医院 | SqlServer |
|
||
| `jinghe` | 泾河医院 | Oracle |
|
||
|
||
---
|
||
|
||
## 2. 技术栈
|
||
|
||
- **语言**:Kotlin 2.0.21(`jvmTarget=17`)
|
||
- **框架**:Solon 4.0.6(国产轻量级 Java 框架)
|
||
- **JDK**:17 LTS(推荐)或 21 LTS
|
||
- **ORM**:MyBatis-Plus 3.5.9
|
||
- **数据库**:Oracle / SqlServer(直连医院库,不可修改)
|
||
- **日志**:Logback 1.5.12
|
||
- **HTTP/WS**:OkHttp 4.12.0
|
||
- **构建**:Maven 3.9+
|
||
|
||
> ✅ **依赖瘦身**:不接入 Knife4j / Druid / Lombok / Jasypt(详见 [01-技术栈选型.md](../ob_data/01-技术栈选型.md))
|
||
|
||
---
|
||
|
||
## 3. 项目结构
|
||
|
||
```
|
||
hospital-front/
|
||
├── pom.xml
|
||
├── README.md
|
||
├── .gitignore
|
||
├── src/
|
||
│ ├── main/
|
||
│ │ ├── kotlin/com/hospital/front/
|
||
│ │ │ ├── HospitalFrontApp.kt # @SolonMain 启动类
|
||
│ │ │ ├── adapter/ # 医院适配器(策略模式)
|
||
│ │ │ ├── api/ # HTTP 接口层(按业务域)
|
||
│ │ │ ├── service/ # 业务服务层
|
||
│ │ │ ├── mapper/ # 数据访问层
|
||
│ │ │ ├── vo/ # 值对象
|
||
│ │ │ ├── dto/ # 数据传输对象
|
||
│ │ │ ├── infra/ # 基础设施
|
||
│ │ │ └── task/ # 定时任务
|
||
│ │ └── resources/
|
||
│ │ ├── app.yml # Solon 主配置
|
||
│ │ ├── logback.xml # 日志配置
|
||
│ │ └── mapper/ # MyBatis XML
|
||
│ └── test/kotlin/ # 单元测试
|
||
└── pac/ # 部署包(运行时外置)
|
||
├── bin/ # 启动脚本
|
||
├── conf/ # 外置配置
|
||
├── backup/ # 历史版本
|
||
├── log/ # 日志
|
||
├── pid/ # PID 文件
|
||
└── tmp/ # 临时文件
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 构建
|
||
|
||
```bash
|
||
mvn clean package -DskipTests
|
||
# 产出:target/hospital-front-1.0.0.jar
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 启动(开发环境)
|
||
|
||
```bash
|
||
# 拷贝外置配置(首次启动)
|
||
cp -r pac/conf-example pac/conf
|
||
# 编辑配置
|
||
vim pac/conf/app-jinghe.yml
|
||
|
||
# 启动(默认加载 app.yml + conf/app-{HOSPITAL}.yml)
|
||
HOSPITAL=jinghe java -jar target/hospital-front-1.0.0.jar
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 部署
|
||
|
||
详细部署、升级、回滚 SOP:[05-部署运维.md](../ob_data/05-部署运维.md)
|
||
|
||
**Windows Server 简版**:
|
||
```batch
|
||
D:
|
||
cd D:\hospital-front\bin
|
||
call start.bat start
|
||
```
|
||
|
||
---
|
||
|
||
## 7. 文档
|
||
|
||
完整设计文档位于:`E:\data\ob_data\myob\11 健康长庆\医院前置机重构\`
|
||
|
||
| 文档 | 内容 |
|
||
|---|---|
|
||
| [00-总体方案.md](../ob_data/00-总体方案.md) | 整体方案 |
|
||
| [01-技术栈选型.md](../ob_data/01-技术栈选型.md) | Solon 选型、版本、注解对照 |
|
||
| [02-医院差异化矩阵.md](../ob_data/02-医院差异化矩阵.md) | 5 家医院差异、Adapter 拆分 |
|
||
| [03-架构设计.md](../ob_data/03-架构设计.md) | 系统架构、模块、时序 |
|
||
| [04-数据流与接口契约.md](../ob_data/04-数据流与接口契约.md) | 接口清单、入参出参 |
|
||
| [05-部署运维.md](../ob_data/05-部署运维.md) | 部署、升级、回滚 SOP |
|
||
| [06-变更记录.md](../ob_data/06-变更记录.md) | 所有变更登记 |
|
||
|
||
---
|
||
|
||
## 8. 任务进度
|
||
|
||
| Step | 内容 | 状态 |
|
||
|---|---|---|
|
||
| 1 | 工程骨架 | ✅ |
|
||
| 2 | 5 医院配置中心 | ⏳ |
|
||
| 3 | 业务接口 Kotlin 重写 | ⏳ |
|
||
| 4 | 5 套 Mapper 适配 | ⏳ |
|
||
| 5 | 主程序被控端 API | ⏳ |
|
||
| 6 | Agent 工程 | ⏳ |
|
||
| 7 | 升级流程 | ⏳ |
|
||
| 8 | 日志推送 | ⏳ |
|
||
| 9 | B 端管理后台 | ⏳ |
|
||
| 10 | 联调 + 文档 | ⏳ | |