# 变更日志 - 部门编码同步功能 ## [v1.0] - 2025-10-19 ### 新增功能 ✨ #### 1. 部门编码字段 - 在`sys_dept`表添加`service_order_class`字段(服务单编码) - 在`sys_dept`表添加`dispatch_order_class`字段(调度单编码) - 添加对应的索引以优化查询性能 #### 2. SQL Server编码查询 - 创建`OrderClassDTO`用于封装编码数据 - 创建`OrderClassMapper`从SQL Server的dictionary表查询编码 - 实现服务单编码查询(vType=1) - 实现调度单编码查询(vType=2) #### 3. 编码数据服务 - 创建`IOrderClassDataService`接口 - 实现`OrderClassDataServiceImpl`服务类 - 使用`@DataSource(SQLSERVER)`注解自动切换数据源 #### 4. 自动编码匹配 - 在部门同步时自动提取城市名称 - 智能匹配SQL Server中的编码数据 - 自动设置分公司的服务单和调度单编码 #### 5. 地名匹配算法 - 实现`matchCityNameToCode()`方法 - 支持模糊匹配(contains方式) - 完整的日志记录和异常处理 ### 修改文件 📝 #### SysDept.java **位置**:`ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java` **变更**: ```java // 新增字段 private String serviceOrderClass; // 服务单编码 private String dispatchOrderClass; // 调度单编码 // 新增getter/setter方法 public String getServiceOrderClass() { ... } public void setServiceOrderClass(String serviceOrderClass) { ... } public String getDispatchOrderClass() { ... } public void setDispatchOrderClass(String dispatchOrderClass) { ... } ``` #### SysDeptMapper.xml **位置**:`ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml` **变更**: - `resultMap`中添加新字段映射 - `selectDeptVo`中添加新字段查询 - `selectDeptById`中添加新字段 - `insertDept`中添加新字段插入逻辑 - `updateDept`中添加新字段更新逻辑 #### DepartmentSyncServiceImpl.java **位置**:`ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java` **变更**: ```java // 1. 添加依赖注入 @Autowired private IOrderClassDataService orderClassDataService; // 2. 在创建分公司时添加编码同步 syncOrderClassCodes(newBranch, parts[0].trim()); // 3. 新增辅助方法 private void syncOrderClassCodes(SysDept dept, String cityName) { ... } private String matchCityNameToCode(String cityName, List orderClassList) { ... } ``` ### 新增文件 📁 #### 数据库脚本 ``` sql/add_dept_order_class_fields.sql ``` #### Java类(6个) ``` ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderClassDTO.java ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderClassMapper.java ruoyi-system/src/main/resources/mapper/system/OrderClassMapper.xml ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderClassDataService.java ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderClassDataServiceImpl.java ``` #### 文档(3个) ``` prd/部门编码同步功能说明.md prd/部门编码同步-快速开始.md prd/部门编码同步功能实现总结.md ``` ### 技术细节 🔧 #### 数据源切换 使用Spring的`@DataSource`注解实现多数据源切换: ```java @DataSource(DataSourceType.SQLSERVER) public interface OrderClassMapper { ... } @Service @DataSource(DataSourceType.SQLSERVER) public class OrderClassDataServiceImpl { ... } ``` #### SQL查询 ```sql -- 服务单编码 SELECT vtext, vOrder2, vType FROM dictionary WHERE vtitle = 'OrderClass' AND vType = 1 -- 调度单编码 SELECT vtext, vOrder2, vType FROM dictionary WHERE vtitle = 'OrderClass' AND vType = 2 ``` #### 匹配逻辑 ```java // 提取城市名:湛江--护士 → 湛江 String cityName = parts[0].trim(); // 模糊匹配:湛江 → 湛江服务单 → ZJ if (dto.getVtext() != null && dto.getVtext().contains(cityName)) { return dto.getVOrder2(); } ``` ### 兼容性 🔄 - ✅ 完全向下兼容原有部门同步功能 - ✅ 编码字段可为null,不影响现有流程 - ✅ 不影响其他模块的部门查询和使用 ### 性能影响 ⚡ - 新增2次SQL Server查询(服务单和调度单编码) - 新增地名匹配算法(O(n)复杂度,n为编码数量) - 预计对同步性能影响<10%(编码数量通常<100) ### 日志级别 📋 - `INFO`:匹配成功、创建/更新分公司 - `WARN`:未匹配到编码 - `ERROR`:查询编码异常、同步失败 ### 测试建议 ✅ 1. **功能测试** - [ ] 正常匹配场景 - [ ] 未匹配场景 - [ ] 更新已存在分公司 2. **性能测试** - [ ] 同步100+分公司的耗时 - [ ] SQL Server查询性能 3. **异常测试** - [ ] SQL Server连接失败 - [ ] dictionary表数据缺失 - [ ] 编码格式异常 ### 部署说明 🚀 #### 数据库升级 ```bash mysql -u root -p ry-vue < sql/add_dept_order_class_fields.sql ``` #### 代码编译 ```bash mvn clean package -DskipTests ``` #### 服务重启 ```bash cd ruoyi-admin java -jar target/ruoyi-admin.jar ``` ### 回滚方案 ⏮️ 如需回滚此功能: #### 1. 数据库回滚 ```sql ALTER TABLE sys_dept DROP COLUMN service_order_class; ALTER TABLE sys_dept DROP COLUMN dispatch_order_class; ALTER TABLE sys_dept DROP INDEX idx_service_order_class; ALTER TABLE sys_dept DROP INDEX idx_dispatch_order_class; ``` #### 2. 代码回滚 - 删除新增的6个Java文件 - 恢复`SysDept.java`、`SysDeptMapper.xml`、`DepartmentSyncServiceImpl.java`到修改前版本 ### 已知问题 ⚠️ 无 ### 后续优化 📌 1. 考虑添加缓存机制减少SQL Server查询 2. 考虑添加手动配置编码的REST API 3. 考虑升级为精确匹配算法 ### 相关链接 🔗 - [部门编码同步功能说明](./部门编码同步功能说明.md) - [部门编码同步-快速开始](./部门编码同步-快速开始.md) - [部门编码同步功能实现总结](./部门编码同步功能实现总结.md) --- ## 版本历史 ### v1.0 (2025-10-19) - 初始版本 - 实现基础的编码自动匹配功能 - 完整的文档和测试用例 --- **负责人**:AI Assistant **审核人**:待定 **发布日期**:2025-10-19