# 组织架构变动后，存在历史数据的组织架构变乱码

**URL:** <https://forum.jit.pro/t/topic/814>\
**Category:** Bug Reports\
**Created:** [September 8, 2026, 6:37am UTC](https://forum.jit.pro/t/topic/814 "2026-09-08T06:37:45Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![coco](https://avatars.discourse-cdn.com/v4/letter/c/8797f3/32.png) [@coco](https://forum.jit.pro/u/coco)\
**Post date:** [September 8, 2026, 6:37am UTC](https://forum.jit.pro/t/topic/814/1 "2026-09-08T06:37:45Z")

</div>

## 背景&操作步骤

> 做了什么操作后，出现的该问题

1. 组织架构有调整，钉钉调整过后，原本的历史数据变成了乱码，导致数据有误，该问题如何解决。

2. 

## 问题

#### 页面截图

#### 前端控制台错误截图 （如果只是后端问题，可跳过）

#### 接口返回数据截图 & 后端日志错误提示（如只是前端问题，可跳过）

## 期望效果

---

<div class="post-metadata">

**Author:** ![wuhao](https://sea2.discourse-cdn.com/flex002/user_avatar/forum.jit.pro/wuhao/32/519_2.png) [@wuhao](https://forum.jit.pro/u/wuhao)\
**Post date:** [September 9, 2026, 1:30am UTC](https://forum.jit.pro/t/topic/814/2 "2026-09-09T01:30:28Z")

</div>

显示是部门id和名称的映射， 你是将之前的部门删除了吗

---

<div class="post-metadata">

**Author:** ![coco](https://avatars.discourse-cdn.com/v4/letter/c/8797f3/32.png) [@coco](https://forum.jit.pro/u/coco)\
**Post date:** [September 9, 2026, 5:47am UTC](https://forum.jit.pro/t/topic/814/3 "2026-09-09T05:47:50Z")

</div>

是的，历史部门删掉了 但是在职人员变更了新部门，显示的还是被删除的部门id

---

<div class="post-metadata">

**Author:** ![wuhao](https://sea2.discourse-cdn.com/flex002/user_avatar/forum.jit.pro/wuhao/32/519_2.png) [@wuhao](https://forum.jit.pro/u/wuhao)\
**Post date:** [September 9, 2026, 6:14am UTC](https://forum.jit.pro/t/topic/814/5 "2026-09-09T06:14:41Z")

</div>

```auto
历史记录中的“部门”字段保存的是当时的部门 ID。删除旧部门并将人员调整到新部门后，只会更新组织架构中的人员归属，不会自动修改已有业务记录，因此重新同步组织架构不能修复历史数据。   

```

可以通过业务记录中的 memberId 匹配人员当前部门，批量替换已经失效的旧部门 ID。以下是 MySQL 8 修复模板，仅适用于：

- 业务表中的人员字段保存 CorpMember.memberId
- 部门字段为单选部门
- 业务表与组织架构表位于同一数据库
- 每名人员当前只有一个部门  
执行前请替换业务表名、字段名和组织架构 fullName，并先在测试环境验证。

```auto
-- ===== 需要修改的配置 =====
  SET @corp_full_name = 'corps.YourCorp';

  -- your_business_table：业务表
  -- id：业务表主键
  -- member_id：业务表人员 memberId 字段
  -- department_id：需要修复的部门字段

  -- ===== 1. 生成人员当前部门映射 =====
  DROP TEMPORARY TABLE IF EXISTS tmp_member_current_dept;

  CREATE TEMPORARY TABLE tmp_member_current_dept AS
  SELECT
      m.`memberId` AS member_id,
      m.`nick` AS member_name,
      MIN(dm.`deptId`) AS new_dept_id,
      MIN(d.`name`) AS new_dept_name
  FROM `corp_member` m
  JOIN `corp_dept_member` dm
    ON dm.`corpFullName` = m.`corpFullName`
   AND dm.`memberId` = m.`memberId`
  JOIN `corp_dept` d
    ON d.`corpFullName` = dm.`corpFullName`
   AND d.`deptId` = dm.`deptId`
  WHERE m.`corpFullName` = @corp_full_name
    AND m.`status` = 0
  GROUP BY m.`memberId`, m.`nick`
  HAVING COUNT(DISTINCT dm.`deptId`) = 1;

  ALTER TABLE tmp_member_current_dept
  ADD PRIMARY KEY (`member_id`);

  -- ===== 2. 预览待修复数据 =====
  SELECT
      b.`id`,
      b.`member_id`,
      mp.member_name,
      b.`department_id` AS old_dept_id,
      mp.new_dept_id,
      mp.new_dept_name
  FROM `your_business_table` b
  JOIN tmp_member_current_dept mp
    ON mp.member_id = b.`member_id`
  LEFT JOIN `corp_dept` old_d
    ON old_d.`corpFullName` = @corp_full_name
   AND old_d.`deptId` = b.`department_id`
  WHERE b.`department_id` IS NOT NULL
    AND b.`department_id` <> ''
    AND old_d.`deptId` IS NULL;

  -- ===== 3. 备份待修复记录 =====
  CREATE TABLE `your_business_table_dept_bak_20260909`
  LIKE `your_business_table`;

  INSERT INTO `your_business_table_dept_bak_20260909`
  SELECT b.*
  FROM `your_business_table` b
  JOIN tmp_member_current_dept mp
    ON mp.member_id = b.`member_id`
  LEFT JOIN `corp_dept` old_d
    ON old_d.`corpFullName` = @corp_full_name
   AND old_d.`deptId` = b.`department_id`
  WHERE b.`department_id` IS NOT NULL
    AND b.`department_id` <> ''
    AND old_d.`deptId` IS NULL;

  -- ===== 4. 执行修复 =====
  START TRANSACTION;

  UPDATE `your_business_table` b
  JOIN tmp_member_current_dept mp
    ON mp.member_id = b.`member_id`
  LEFT JOIN `corp_dept` old_d
    ON old_d.`corpFullName` = @corp_full_name
   AND old_d.`deptId` = b.`department_id`
  SET b.`department_id` = mp.new_dept_id
  WHERE b.`department_id` IS NOT NULL
    AND b.`department_id` <> ''
    AND old_d.`deptId` IS NULL;

  SELECT ROW_COUNT() AS updated_rows;

  -- 确认更新结果正确后执行
  COMMIT;

  如需恢复，可根据业务表主键执行：

  UPDATE `your_business_table` b
  JOIN `your_business_table_dept_bak_20260909` bak
    ON bak.`id` = b.`id`
  SET b.`department_id` = bak.`department_id`;预先格式化的文本

```

脚本会跳过当前属于多个部门的人员，避免错误替换。若存在一人多部门、人员字段不是 memberId、部门字段为多选部门，或使用 PostgreSQL/SQL Server，请不要直接执行，需要按实际表结构调整

---

<div class="post-metadata">

**Author:** ![coco](https://avatars.discourse-cdn.com/v4/letter/c/8797f3/32.png) [@coco](https://forum.jit.pro/u/coco)\
**Post date:** [September 10, 2026, 6:15am UTC](https://forum.jit.pro/t/topic/814/6 "2026-09-10T06:15:59Z")

</div>

数据库为jit默认的内置数据库，内置数据库应该在哪能找到对应的数据条？

---

<div class="post-metadata">

**Author:** ![wuhao](https://sea2.discourse-cdn.com/flex002/user_avatar/forum.jit.pro/wuhao/32/519_2.png) [@wuhao](https://forum.jit.pro/u/wuhao)\
**Post date:** [September 10, 2026, 6:32am UTC](https://forum.jit.pro/t/topic/814/7 "2026-09-10T06:32:53Z")

</div>

你是服务器版本 还是 桌面版

---

<div class="post-metadata">

**Author:** ![coco](https://avatars.discourse-cdn.com/v4/letter/c/8797f3/32.png) [@coco](https://forum.jit.pro/u/coco)\
**Post date:** [September 10, 2026, 6:37am UTC](https://forum.jit.pro/t/topic/814/8 "2026-09-10T06:37:07Z")

</div>

服务器

---

<div class="post-metadata">

**Author:** ![wuhao](https://sea2.discourse-cdn.com/flex002/user_avatar/forum.jit.pro/wuhao/32/519_2.png) [@wuhao](https://forum.jit.pro/u/wuhao)\
**Post date:** [September 10, 2026, 6:40am UTC](https://forum.jit.pro/t/topic/814/9 "2026-09-10T06:40:59Z")

</div>

服务器版的默认内置数据库是 MySQL，请使用服务器部署配置中的 `MYSQL` 连接信息访问；数据库名是应用 appId 将英文句点 `.` 替换为下划线 `_`，例如 `org.app` 对应 `org_app`。组织架构数据位于 `corp_member`、`corp_dept_member`、`corp_dept`，但需要修复的旧部门 ID 在具体业务模型 `dbTable` 对应的业务表中。请补充应用 appId、业务模型名称或 fullName、人员字段名和部门字段名，我们再按实际表结构给出查询及修复 SQL；确认前请勿直接执行之前的 UPDATE 脚本。

---

<div class="post-metadata">

**Author:** ![coco](https://avatars.discourse-cdn.com/v4/letter/c/8797f3/32.png) [@coco](https://forum.jit.pro/u/coco)\
**Post date:** [September 11, 2026, 1:12am UTC](https://forum.jit.pro/t/topic/814/10 "2026-09-11T01:12:27Z")

</div>

`MYSQL` 连不上，需要帮忙看下

 ![image](https://us1.discourse-cdn.com/flex002/uploads/jitai/original/2X/d/d3a22fd4d7d3e9ebb15638352d501a97c63f13a6.png)

---

<div class="post-metadata">

**Author:** ![wuhao](https://sea2.discourse-cdn.com/flex002/user_avatar/forum.jit.pro/wuhao/32/519_2.png) [@wuhao](https://forum.jit.pro/u/wuhao)\
**Post date:** [September 11, 2026, 1:34am UTC](https://forum.jit.pro/t/topic/814/11 "2026-09-11T01:34:46Z")

</div>

容器内mysql端口映射出来了吗，默认用户名密码你知不知道
