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

部门编码映射表

概述

本文档记录了MySQL sys_dept表与SQL Server dictionary表中订单编码的映射关系。

更新日期:2025-10-19
版本:v1.0

字段映射

MySQL sys_dept表

字段名 类型 说明 示例
dept_id BIGINT 部门ID(主键) 200
dept_name VARCHAR(30) 部门名称 中山分公司
parent_id BIGINT 父部门ID 100
service_order_class VARCHAR(20) 服务单编码 JA
dispatch_order_class VARCHAR(20) 调度单编码 JA01

SQL Server dictionary表

字段名 类型 说明 示例
vtext VARCHAR(50) 编码文本 中山服务单
vOrder2 VARCHAR(20) 编码值 JA
vtitle VARCHAR(50) 编码标题 OrderClass
vType INT 编码类型 1-服务单,2-调度单

编码类型说明

vType = 1(服务单编码)

对应MySQL表的service_order_class字段

查询SQL
sql SELECT vtext, vOrder2 FROM dictionary WHERE vtitle = 'OrderClass' AND vType = 1 ORDER BY vOrder2;

vType = 2(调度单编码)

对应MySQL表的dispatch_order_class字段

查询SQL
sql SELECT vtext, vOrder2 FROM dictionary WHERE vtitle = 'OrderClass' AND vType = 2 ORDER BY vOrder2;

编码示例数据

服务单编码示例(vType=1)

vtext vOrder2 说明
中山服务单 JA 中山地区服务单
广州服务单 GZ 广州地区服务单
湛江服务单 ZJ 湛江地区服务单
珠海服务单 ZH 珠海地区服务单
佛山服务单 FS 佛山地区服务单

调度单编码示例(vType=2)

vtext vOrder2 说明
中山调度单 JA01 中山地区调度单
广州调度单 GZ01 广州地区调度单
湛江调度单 ZJ01 湛江地区调度单
珠海调度单 ZH01 珠海地区调度单
佛山调度单 FS01 佛山地区调度单

地名匹配规则

匹配算法

输入:分公司名称(如:湛江--护士)
     ↓
步骤1:提取城市名(湛江)
     ↓
步骤2:在vtext中查找包含该城市名的记录
     ↓
步骤3:返回对应的vOrder2值

匹配示例

分公司名称 提取城市名 匹配vtext 服务单编码 调度单编码
中山--护士 中山 中山服务单/中山调度单 JA JA01
广州--车队 广州 广州服务单/广州调度单 GZ GZ01
湛江--客服 湛江 湛江服务单/湛江调度单 ZJ ZJ01
珠海--办公室 珠海 珠海服务单/珠海调度单 ZH ZH01

编码使用场景

1. 部门同步时自动填充

在部门同步过程中,系统会自动:
1. 从SQL Server查询最新的编码列表
2. 根据分公司名称提取城市名
3. 匹配对应的编码
4. 填充到service_order_classdispatch_order_class字段

2. 旧系统数据同步

在向旧系统同步数据时,可以使用这些编码:

// 查询部门信息
SysDept dept = sysDeptMapper.selectDeptById(deptId);

// 获取编码
String serviceOrderClass = dept.getServiceOrderClass();  // 如:JA
String dispatchOrderClass = dept.getDispatchOrderClass(); // 如:JA01

// 传递给旧系统
params.put("orderClass", serviceOrderClass);
params.put("dispatchClass", dispatchOrderClass);

3. 前端展示

在前端部门管理页面,可以展示这些编码:

{
  deptId: 200,
  deptName: '中山分公司',
  serviceOrderClass: 'JA',
  dispatchOrderClass: 'JA01'
}

数据维护

添加新编码

在SQL Server的dictionary表中添加:

-- 添加服务单编码
INSERT INTO dictionary (vtitle, vtext, vOrder2, vType)
VALUES ('OrderClass', '深圳服务单', 'SZ', 1);

-- 添加调度单编码
INSERT INTO dictionary (vtitle, vtext, vOrder2, vType)
VALUES ('OrderClass', '深圳调度单', 'SZ01', 2);

修改编码

-- 修改服务单编码
UPDATE dictionary 
SET vOrder2 = 'NEW_CODE'
WHERE vtitle = 'OrderClass' 
  AND vtext = '中山服务单' 
  AND vType = 1;

删除编码

-- 删除编码
DELETE FROM dictionary 
WHERE vtitle = 'OrderClass' 
  AND vtext = '中山服务单' 
  AND vType = 1;

数据验证

验证编码完整性

检查是否所有分公司都有对应的编码:

-- MySQL查询
SELECT 
    d.dept_id,
    d.dept_name,
    d.service_order_class,
    d.dispatch_order_class,
    CASE 
        WHEN d.service_order_class IS NULL THEN '缺少服务单编码'
        WHEN d.dispatch_order_class IS NULL THEN '缺少调度单编码'
        ELSE '完整'
    END AS status
FROM sys_dept d
WHERE d.parent_id = 100 
  AND d.dept_name LIKE '%分公司'
ORDER BY d.dept_name;

验证编码存在性

检查MySQL中的编码是否在SQL Server中存在:

-- 在SQL Server中验证
SELECT 
    d.dept_name,
    d.service_order_class,
    d.dispatch_order_class,
    (SELECT COUNT(*) FROM dictionary 
     WHERE vtitle = 'OrderClass' 
       AND vOrder2 = d.service_order_class 
       AND vType = 1) AS service_exists,
    (SELECT COUNT(*) FROM dictionary 
     WHERE vtitle = 'OrderClass' 
       AND vOrder2 = d.dispatch_order_class 
       AND vType = 2) AS dispatch_exists
FROM mysql_sys_dept d
WHERE d.parent_id = 100;

编码规范

命名规范

  1. vtext命名
  • 格式:{城市名}服务单{城市名}调度单
  • 示例:中山服务单、广州调度单
  1. vOrder2命名
  • 服务单:通常使用城市拼音首字母(大写)
  • 调度单:通常在服务单编码后加01
  • 示例:JA(中山)、JA01(中山调度单)

编码长度

  • vOrder2字段最大长度:20个字符
  • 建议使用2-10个字符的编码
  • 保持简洁易识别

常见问题

Q1: 如何查看当前所有可用的编码?

SQL Server查询
sql SELECT vtext, vOrder2, vType FROM dictionary WHERE vtitle = 'OrderClass' ORDER BY vType, vOrder2;

Q2: 新增分公司后编码为空怎么办?

  1. 检查SQL Server中是否有对应城市的编码
  2. 如果没有,需要在dictionary表中添加
  3. 添加后重新执行部门同步

Q3: 如何手动更新编码?

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

Q4: 编码可以重复吗?

  • 理论上可以,但不建议
  • 建议每个分公司使用唯一的编码
  • 便于在旧系统中区分不同分公司

扩展字段说明

service_order_class(服务单编码)

  • 用途:标识该分公司的服务单类型
  • 来源:SQL Server dictionary表(vType=1)
  • 格式:通常2-5个字符
  • 示例:JA, GZ, ZJ

dispatch_order_class(调度单编码)

  • 用途:标识该分公司的调度单类型
  • 来源:SQL Server dictionary表(vType=2)
  • 格式:通常3-6个字符
  • 示例:JA01, GZ01, ZJ01

相关文档


维护人:系统管理员
更新频率:按需更新
最后更新:2025-10-19