# 部门编码同步 - 快速开始 ## 功能说明 在部门同步时,自动从SQL Server读取服务单和调度单编码,并根据分公司名称中的地名自动匹配。 **示例**: - 分公司:`湛江--护士` → 提取城市名:`湛江` - SQL Server查询:`湛江服务单` → 编码:`ZJ` - SQL Server查询:`湛江调度单` → 编码:`ZJ01` - 结果:分公司的`service_order_class`设为`ZJ`,`dispatch_order_class`设为`ZJ01` ## 安装步骤 ### 1️⃣ 执行数据库脚本 ```bash # 添加服务单和调度单编码字段 mysql -u root -p ry-vue < sql/add_dept_order_class_fields.sql ``` ### 2️⃣ 编译项目 ```bash cd d:\project\急救转运\code\Api\RuoYi-Vue-master mvn clean package -DskipTests ``` ### 3️⃣ 启动服务 ```bash cd ruoyi-admin java -jar target/ruoyi-admin.jar ``` ## 使用方法 ### 方式1: Postman调用 ``` POST http://localhost:8080/system/dept/sync/branch Headers: Authorization: Bearer {你的token} ``` ### 方式2: curl命令 ```bash curl -X POST http://localhost:8080/system/dept/sync/branch \ -H "Authorization: Bearer {你的token}" ``` ## 验证结果 ### 查看同步的分公司编码 ```sql SELECT dept_id AS '部门ID', dept_name AS '部门名称', service_order_class AS '服务单编码', dispatch_order_class AS '调度单编码' FROM sys_dept WHERE parent_id = 100 AND dept_name LIKE '%分公司' ORDER BY dept_name; ``` **预期结果示例**: | 部门ID | 部门名称 | 服务单编码 | 调度单编码 | |--------|---------|-----------|-----------| | 200 | 中山分公司 | JA | JA01 | | 201 | 广州分公司 | GZ | GZ01 | | 202 | 湛江分公司 | ZJ | ZJ01 | ### 查看SQL Server编码数据 连接到SQL Server数据库,执行: ```sql -- 查看服务单编码 SELECT vtext, vOrder2 FROM dictionary WHERE vtitle='OrderClass' AND vType=1 ORDER BY vOrder2; -- 查看调度单编码 SELECT vtext, vOrder2 FROM dictionary WHERE vtitle='OrderClass' AND vType=2 ORDER BY vOrder2; ``` ## 返回示例 ```json { "code": 200, "msg": "同步完成!创建分公司: 3, 更新分公司: 0, 创建部门: 12, 更新部门: 0", "data": { "createdBranch": 3, "updatedBranch": 0, "createdDept": 12, "updatedDept": 0, "totalProcessed": 12 } } ``` ## 日志查看 启动服务后,查看日志文件中的编码匹配信息: ``` INFO DepartmentSyncServiceImpl - 匹配到服务单编码 - 城市: 中山, 编码: JA INFO DepartmentSyncServiceImpl - 匹配到调度单编码 - 城市: 中山, 编码: JA01 INFO DepartmentSyncServiceImpl - 创建新分公司: 中山分公司, ID: 200, 服务单编码: JA, 调度单编码: JA01 ``` ## 常见问题 ### Q1: 编码字段为null? **原因**:SQL Server中没有匹配的城市名称 **解决方案**: 1. 检查SQL Server的dictionary表中是否有对应城市的编码 2. 确认vtext字段是否包含分公司名称中的城市名(如:中山、广州) ### Q2: 如何手动更新编码? 可以直接在MySQL中更新: ```sql UPDATE sys_dept SET service_order_class = 'JA', dispatch_order_class = 'JA01' WHERE dept_name = '中山分公司'; ``` ### Q3: 如何查看哪些分公司未匹配到编码? ```sql SELECT dept_id, dept_name, service_order_class, dispatch_order_class FROM sys_dept WHERE parent_id = 100 AND dept_name LIKE '%分公司' AND (service_order_class IS NULL OR dispatch_order_class IS NULL) ORDER BY dept_name; ``` ## 文件清单 ### 新增文件(7个) 1. `sql/add_dept_order_class_fields.sql` - 数据库脚本 2. `ruoyi-system/src/main/java/com/ruoyi/system/domain/OrderClassDTO.java` - DTO 3. `ruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderClassMapper.java` - Mapper接口 4. `ruoyi-system/src/main/resources/mapper/system/OrderClassMapper.xml` - Mapper XML 5. `ruoyi-system/src/main/java/com/ruoyi/system/service/IOrderClassDataService.java` - 服务接口 6. `ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderClassDataServiceImpl.java` - 服务实现 7. `prd/部门编码同步功能说明.md` - 详细文档 ### 修改文件(3个) 1. `ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java` 2. `ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml` 3. `ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java` ## 下一步 部门编码同步功能已完成,接下来可以: 1. 测试同步功能是否正常 2. 验证编码匹配是否准确 3. 在旧系统同步时使用这些编码字段 详细说明请查看:[部门编码同步功能说明.md](./部门编码同步功能说明.md)