Files
hospital-front/README.md
T
lianlonggangandClaude 535162e63a feat: Kotlin+Solon 重构医院前置机(业务+被控端+Agent+升级流程)
主程序(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>
2026-08-21 12:35:05 +08:00

145 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | 联调 + 文档 | ⏳ |