编辑 | blame | 历史 | 原始文档

部门编码同步 - 快速开始

功能说明

在部门同步时,自动从SQL Server读取服务单和调度单编码,并根据分公司名称中的地名自动匹配。

示例
- 分公司:湛江--护士 → 提取城市名:湛江
- SQL Server查询:湛江服务单 → 编码:ZJ
- SQL Server查询:湛江调度单 → 编码:ZJ01
- 结果:分公司的service_order_class设为ZJdispatch_order_class设为ZJ01

安装步骤

1️⃣ 执行数据库脚本

# 添加服务单和调度单编码字段
mysql -u root -p ry-vue < sql/add_dept_order_class_fields.sql

2️⃣ 编译项目

cd d:\project\急救转运\code\Api\RuoYi-Vue-master
mvn clean package -DskipTests

3️⃣ 启动服务

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命令

curl -X POST http://localhost:8080/system/dept/sync/branch \
  -H "Authorization: Bearer {你的token}"

验证结果

查看同步的分公司编码

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数据库,执行:

-- 查看服务单编码
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;

返回示例

{
  "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中更新:

UPDATE sys_dept 
SET service_order_class = 'JA',
    dispatch_order_class = 'JA01'
WHERE dept_name = '中山分公司';

Q3: 如何查看哪些分公司未匹配到编码?

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