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

Hospital Front — 医院前置机程序

基于 Kotlin + Solon 4.0.6 重构的医院前置机对接系统

重构源:hospitalmiddleSpringBoot 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.21jvmTarget=17
  • 框架Solon 4.0.6(国产轻量级 Java 框架)
  • JDK17 LTS(推荐)或 21 LTS
  • ORMMyBatis-Plus 3.5.9
  • 数据库Oracle / SqlServer(直连医院库,不可修改)
  • 日志Logback 1.5.12
  • HTTP/WSOkHttp 4.12.0
  • 构建Maven 3.9+

依赖瘦身:不接入 Knife4j / Druid / Lombok / Jasypt(详见 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. 构建

mvn clean package -DskipTests
# 产出:target/hospital-front-1.0.0.jar

5. 启动(开发环境)

# 拷贝外置配置(首次启动)
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. 部署

详细部署、升级、回滚 SOP05-部署运维.md

Windows Server 简版

D:
cd D:\hospital-front\bin
call start.bat start

7. 文档

完整设计文档位于:E:\data\ob_data\myob\11 健康长庆\医院前置机重构\

文档 内容
00-总体方案.md 整体方案
01-技术栈选型.md Solon 选型、版本、注解对照
02-医院差异化矩阵.md 5 家医院差异、Adapter 拆分
03-架构设计.md 系统架构、模块、时序
04-数据流与接口契约.md 接口清单、入参出参
05-部署运维.md 部署、升级、回滚 SOP
06-变更记录.md 所有变更登记

8. 任务进度

Step 内容 状态
1 工程骨架
2 5 医院配置中心
3 业务接口 Kotlin 重写
4 5 套 Mapper 适配
5 主程序被控端 API
6 Agent 工程
7 升级流程
8 日志推送
9 B 端管理后台
10 联调 + 文档
S
Description
医院前置机程序
Readme
306 KiB
Languages
Java 100%