sys_dept表添加service_order_class字段(服务单编码)sys_dept表添加dispatch_order_class字段(调度单编码)OrderClassDTO用于封装编码数据OrderClassMapper从SQL Server的dictionary表查询编码IOrderClassDataService接口OrderClassDataServiceImpl服务类@DataSource(SQLSERVER)注解自动切换数据源matchCityNameToCode()方法位置: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) { ... }
```
位置:ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
变更:
- resultMap中添加新字段映射
- selectDeptVo中添加新字段查询
- selectDeptById中添加新字段
- insertDept中添加新字段插入逻辑
- updateDept中添加新字段更新逻辑
位置: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
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
prd/部门编码同步功能说明.md
prd/部门编码同步-快速开始.md
prd/部门编码同步功能实现总结.md
使用Spring的@DataSource注解实现多数据源切换:
```java
@DataSource(DataSourceType.SQLSERVER)
public interface OrderClassMapper { ... }
@Service
@DataSource(DataSourceType.SQLSERVER)
public class OrderClassDataServiceImpl { ... }
```
-- 服务单编码
SELECT vtext, vOrder2, vType
FROM dictionary
WHERE vtitle = 'OrderClass' AND vType = 1
-- 调度单编码
SELECT vtext, vOrder2, vType
FROM dictionary
WHERE vtitle = 'OrderClass' AND vType = 2
// 提取城市名:湛江--护士 → 湛江
String cityName = parts[0].trim();
// 模糊匹配:湛江 → 湛江服务单 → ZJ
if (dto.getVtext() != null && dto.getVtext().contains(cityName)) {
return dto.getVOrder2();
}
INFO:匹配成功、创建/更新分公司WARN:未匹配到编码ERROR:查询编码异常、同步失败mysql -u root -p ry-vue < sql/add_dept_order_class_fields.sql
mvn clean package -DskipTests
cd ruoyi-admin
java -jar target/ruoyi-admin.jar
如需回滚此功能:
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;
SysDept.java、SysDeptMapper.xml、DepartmentSyncServiceImpl.java到修改前版本无
负责人:AI Assistant
审核人:待定
发布日期:2025-10-19