# QC-NS 项目结构说明 ## 项目概述 qc-ns 是基于 QConline 项目重构的新版本,主要针对新国标的质控因子进行识别和质控。 ## 技术栈 - Java 17 - Spring Boot 2.7.18 - MyBatis-Plus - OpenCV 4.8.0 - MySQL - Redis ## 项目结构 ### 模块划分 项目按照功能模块进行划分,每个模块包含以下标准结构: - `controller/` - 控制器层 - `service/` - 服务接口层 - `impl/` - 服务实现层 - `mapper/` - 数据访问层 - `xml/` - MyBatis XML 映射文件 - `entity/` - 实体类 - `request/` - 请求 DTO - `response/` - 响应 DTO ### 核心模块 #### 1. QC 模块 (modules/qc) 质控相关功能模块 **Entity:** - QcFactor - 质控因子 - QcStandard - 质控标准 - QcStandardFactor - 质控标准因子关联 - QcTask - 质控任务 - QcResult - 质控结果 - QcResultSummary - 质控结果汇总 - QcPresetConfig - 质控预设配置 **子模块:** - `ai/` - AI 质控相关 - `engine/` - 质控引擎 - `preset/` - 预设配置 - `task/` - 任务调度 #### 2. Study 模块 (modules/study) 检查数据管理模块 **Entity:** - StudyInfo - 检查信息 **Service:** - StudyQueryService - 检查查询服务 - DataManageService - 数据管理服务 #### 3. Patient 模块 (modules/patient) 患者信息管理模块 **Entity:** - PatientInfo - 患者信息 #### 4. Institution 模块 (modules/institution) 机构管理模块 **Entity:** - Institution - 机构信息 - UserInstitution - 用户机构关联 #### 5. System 模块 (modules/system) 系统管理模块 **Entity:** - SysUser - 系统用户 - Menu - 菜单 - UserMenu - 用户菜单关联 - SysLog - 系统日志 #### 6. Report 模块 (modules/report) 报告管理模块 **Entity:** - ReportInfo - 报告信息 #### 7. DICOM 模块 (modules/dicom) DICOM 影像处理模块 **Entity:** - DicomInstanceInfo - DICOM 实例信息 - SeriesInfo - 序列信息 - StudySplitRecord - 检查拆分记录 **Service:** - DicomService - DICOM 服务 - DicomImageService - DICOM 图像服务 - DicomAsyncService - DICOM 异步服务 #### 8. PACS 模块 (modules/pacs) PACS 对接模块 **Service:** - PACS 相关服务 #### 9. User 模块 (modules/user) 用户管理模块 **Controller:** - 用户相关控制器 **Service:** - 用户服务 #### 10. Auth 模块 (modules/auth) 认证授权模块 **Controller:** - 认证相关控制器 ### 公共组件 #### component 包 - `response/` - 统一响应处理 - `aop/` - AOP 切面 - `jackson/` - Jackson 配置 #### common 包 - 通用工具类和异常处理 #### config 包 - 系统配置类 #### security 包 - 安全相关配置 #### utils 包 - 工具类 ## MyBatis 配置 ### Mapper 扫描路径 ```yaml mybatis-plus: mapper-locations: classpath*:com/zskk/qconline/modules/**/mapper/xml/*.xml type-aliases-package: com.zskk.qcns.modules.*.entity ``` ### Mapper XML 文件位置 所有 Mapper XML 文件统一放在各模块的 `mapper/xml/` 目录下,例如: - QC 模块: `modules/qc/mapper/xml/*.xml` - Study 模块: `modules/study/mapper/xml/*.xml` - Patient 模块: `modules/patient/mapper/xml/*.xml` ## 开发规范 ### 包命名规范 - Entity: `com.zskk.qcns.modules.{模块}.entity` - Mapper: `com.zskk.qcns.modules.{模块}.mapper` - Service: `com.zskk.qcns.modules.{模块}.service` - Service Impl: `com.zskk.qcns.modules.{模块}.service.impl` - Controller: `com.zskk.qcns.modules.{模块}.controller` ### 文件组织原则 1. 按功能模块划分,而不是按技术层次 2. 每个模块保持独立性,减少模块间耦合 3. 通用功能放在 common 或 component 包 4. 配置文件统一管理 ## 数据库配置 ### 数据源 - Host: 127.0.0.1:3306 - Database: qconline - Username: root ### Redis - Host: localhost:6379 - Database: 0 ## 与原项目的差异 ### 结构改进 1. **模块化**: 从全局共享的 entity/mapper 改为按模块独立管理 2. **清晰的层次**: 每个模块都有完整的 MVC 结构 3. **XML 文件管理**: 从统一的 resources/mapper 改为各模块的 mapper/xml 目录 4. **包路径优化**: 所有 import 语句都指向具体模块,避免命名冲突 ### 优势 1. 模块职责清晰,易于维护 2. 代码组织更规范,符合 DDD 思想 3. 便于团队协作,不同模块可独立开发 4. 降低耦合度,提高代码复用性 ## 下一步工作 1. **业务优化**: 实现新国标质控因子的识别和转换 2. **任务调度**: 实现周期性质控任务(按周、按月) 3. **性能优化**: DICOM 图像转换缓存策略 4. **功能扩展**: 质控标准的灵活组合 ## 注意事项 1. 确保所有 Mapper 接口的包名与 XML 文件的 namespace 一致 2. Entity 类的包名要与 MyBatis 的 type-aliases-package 配置匹配 3. 新增模块时遵循现有的目录结构规范 4. Service 实现类统一放在 service/impl 包下