修改目录
This commit is contained in:
24
assets/数据库文档/fix_collation_staff_fmy_relation.sql
Normal file
24
assets/数据库文档/fix_collation_staff_fmy_relation.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
-- 修复员工基础表和员工家庭关系表字符集排序规则
|
||||
-- 问题: ccdi_staff_fmy_relation.person_id (utf8mb4_general_ci) 与 ccdi_base_staff.id_card (utf8mb4_unicode_ci) 字符集不一致
|
||||
-- 解决方案: 统一为 utf8mb4_general_ci
|
||||
-- 执行时间: 2026-02-09
|
||||
|
||||
USE
|
||||
`ruoyi-vue-pro`;
|
||||
|
||||
-- 修改 ccdi_base_staff 表的 id_card 字段字符集,统一为 utf8mb4_general_ci
|
||||
ALTER TABLE `ccdi_base_staff`
|
||||
MODIFY COLUMN `id_card` VARCHAR (100) DEFAULT NULL COLLATE `utf8mb4_general_ci` COMMENT '身份证号';
|
||||
|
||||
-- 验证修改
|
||||
SELECT TABLE_NAME,
|
||||
COLUMN_NAME,
|
||||
CHARACTER_SET_NAME,
|
||||
COLLATION_NAME
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'ruoyi-vue-pro'
|
||||
AND TABLE_NAME IN ('ccdi_staff_fmy_relation', 'ccdi_base_staff')
|
||||
AND COLUMN_NAME IN ('person_id', 'id_card')
|
||||
ORDER BY TABLE_NAME, COLUMN_NAME;
|
||||
|
||||
-- 说明: 执行后两个表的字符集应该都显示为 utf8mb4_general_ci
|
||||
98
assets/数据库文档/verify_collation_fix.sql
Normal file
98
assets/数据库文档/verify_collation_fix.sql
Normal file
@@ -0,0 +1,98 @@
|
||||
-- ========================================
|
||||
-- 验证员工家庭关系表 JOIN 字符集问题修复
|
||||
-- ========================================
|
||||
-- 目的: 验证 ccdi_staff_fmy_relation 与 ccdi_base_staff 表的 JOIN 操作正常
|
||||
-- 创建时间: 2026-02-09
|
||||
-- ========================================
|
||||
|
||||
USE
|
||||
`ccdi`;
|
||||
|
||||
-- 测试 1: 验证字符集统一性
|
||||
-- ========================================
|
||||
SELECT '=== 字符集验证 ===' AS test_section;
|
||||
|
||||
SELECT TABLE_NAME AS '表名', COLUMN_NAME AS '字段名', CHARACTER_SET_NAME AS '字符集', COLLATION_NAME AS '排序规则', CASE
|
||||
WHEN COLLATION_NAME = 'utf8mb4_general_ci' THEN '✅ 正确'
|
||||
ELSE '❌ 错误'
|
||||
END AS '状态'
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'ccdi'
|
||||
AND TABLE_NAME IN ('ccdi_staff_fmy_relation', 'ccdi_base_staff')
|
||||
AND COLUMN_NAME IN ('person_id', 'id_card')
|
||||
ORDER BY TABLE_NAME, COLUMN_NAME;
|
||||
|
||||
-- 测试 2: 验证 JOIN 操作(模拟实际查询)
|
||||
-- ========================================
|
||||
SELECT '=== JOIN 操作验证 ===' AS test_section;
|
||||
|
||||
SELECT r.id,
|
||||
r.person_id,
|
||||
s.name AS person_name,
|
||||
r.relation_type,
|
||||
r.relation_name,
|
||||
r.gender,
|
||||
s.id_card AS staff_id_card,
|
||||
CASE
|
||||
WHEN r.person_id = s.id_card THEN '✅ 匹配成功'
|
||||
ELSE '❌ 匹配失败'
|
||||
END AS join_status
|
||||
FROM ccdi_staff_fmy_relation r
|
||||
LEFT JOIN ccdi_base_staff s ON r.person_id = s.id_card
|
||||
WHERE r.is_emp_family = 1 LIMIT 5;
|
||||
|
||||
-- 测试 3: 统计数据
|
||||
-- ========================================
|
||||
SELECT '=== 数据统计 ===' AS test_section;
|
||||
|
||||
SELECT COUNT(*) AS total_records,
|
||||
COUNT(s.name) AS matched_records,
|
||||
COUNT(*) - COUNT(s.name) AS unmatched_records,
|
||||
CONCAT(
|
||||
ROUND(COUNT(s.name) / COUNT(*) * 100, 2),
|
||||
'%'
|
||||
) AS match_rate
|
||||
FROM ccdi_staff_fmy_relation r
|
||||
LEFT JOIN ccdi_base_staff s ON r.person_id = s.id_card
|
||||
WHERE r.is_emp_family = 1;
|
||||
|
||||
-- 测试 4: 查找未匹配的记录
|
||||
-- ========================================
|
||||
SELECT '=== 未匹配记录 ===' AS test_section;
|
||||
|
||||
SELECT r.id,
|
||||
r.person_id,
|
||||
r.relation_name,
|
||||
'未找到对应员工信息' AS warning
|
||||
FROM ccdi_staff_fmy_relation r
|
||||
LEFT JOIN ccdi_base_staff s ON r.person_id = s.id_card
|
||||
WHERE r.is_emp_family = 1
|
||||
AND s.id_card IS NULL LIMIT 5;
|
||||
|
||||
-- 测试 5: 字符集转换测试
|
||||
-- ========================================
|
||||
SELECT '=== 字符集转换测试 ===' AS test_section;
|
||||
|
||||
SELECT r.person_id,
|
||||
s.id_card,
|
||||
CHAR_LENGTH(r.person_id) AS len_person_id,
|
||||
CHAR_LENGTH(s.id_card) AS len_id_card,
|
||||
HEX(r.person_id) AS hex_person_id,
|
||||
HEX(s.id_card) AS hex_id_card,
|
||||
CASE
|
||||
WHEN r.person_id = s.id_card THEN '✅ 完全相等'
|
||||
ELSE '❌ 不相等'
|
||||
END AS compare_result
|
||||
FROM ccdi_staff_fmy_relation r
|
||||
INNER JOIN ccdi_base_staff s ON r.person_id = s.id_card
|
||||
WHERE r.is_emp_family = 1 LIMIT 3;
|
||||
|
||||
-- ========================================
|
||||
-- 验证结果说明:
|
||||
-- ========================================
|
||||
-- 1. 字符集验证: 所有字段应显示 ✅ 正确
|
||||
-- 2. JOIN 操作: 应能正常执行,无字符集冲突错误
|
||||
-- 3. 数据统计: 显示匹配率
|
||||
-- 4. 未匹配记录: 显示哪些员工关系记录未关联到员工
|
||||
-- 5. 字符集转换: 验证字段在 JOIN 时能正确比较
|
||||
-- ========================================
|
||||
38
assets/数据库文档/员工调动记录/01_create_table.sql
Normal file
38
assets/数据库文档/员工调动记录/01_create_table.sql
Normal file
@@ -0,0 +1,38 @@
|
||||
-- =============================================
|
||||
-- 员工调动记录表
|
||||
-- 表名: ccdi_staff_transfer
|
||||
-- 说明: 记录员工的调动信息,包括调动前后的部门、职级、岗位、薪酬等级等信息
|
||||
-- 作者: ruoyi
|
||||
-- 日期: 2026-02-10
|
||||
-- =============================================
|
||||
|
||||
DROP TABLE IF EXISTS `ccdi_staff_transfer`;
|
||||
|
||||
CREATE TABLE `ccdi_staff_transfer`
|
||||
(
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`staff_id` bigint(20) NOT NULL COMMENT '员工ID,关联ccdi_base_staff.staff_id',
|
||||
`transfer_type` varchar(50) DEFAULT NULL COMMENT '调动类型:PROMOTION-升职,DEMOPTION-降职,LATERAL-平调,ROTATION-轮岗,SECONDMENT-借调,DEPARTMENT_CHANGE-部门调动,POSITION_CHANGE-职位调整,RETURN-返岗,TERMINATION-离职,OTHER-其他',
|
||||
`transfer_sub_type` varchar(100) DEFAULT NULL COMMENT '调动子类型,双聘调动、临时调动等',
|
||||
`dept_id_before` bigint(20) DEFAULT NULL COMMENT '调动前部门ID',
|
||||
`dept_name_before` varchar(200) DEFAULT NULL COMMENT '调动前部门',
|
||||
`grade_before` varchar(50) DEFAULT NULL COMMENT '调动前职级',
|
||||
`position_before` varchar(100) DEFAULT NULL COMMENT '调动前岗位',
|
||||
`salary_level_before` varchar(50) DEFAULT NULL COMMENT '调动前薪酬等级',
|
||||
`dept_id_after` bigint(20) DEFAULT NULL COMMENT '调动后部门ID',
|
||||
`dept_name_after` varchar(200) DEFAULT NULL COMMENT '调动后部门',
|
||||
`grade_after` varchar(50) DEFAULT NULL COMMENT '调动后职级',
|
||||
`position_after` varchar(100) DEFAULT NULL COMMENT '调动后岗位',
|
||||
`salary_level_after` varchar(50) DEFAULT NULL COMMENT '调动后薪酬等级',
|
||||
`transfer_date` date DEFAULT NULL COMMENT '调动日期',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
|
||||
`created_by` varchar(100) NOT NULL COMMENT '创建人',
|
||||
`updated_by` varchar(100) DEFAULT NULL COMMENT '更新人',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_staff_id` (`staff_id`) USING BTREE,
|
||||
KEY `idx_transfer_type` (`transfer_type`) USING BTREE,
|
||||
KEY `idx_transfer_date` (`transfer_date`) USING BTREE,
|
||||
KEY `idx_dept_before` (`dept_id_before`) USING BTREE,
|
||||
KEY `idx_dept_after` (`dept_id_after`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工调动记录表';
|
||||
30
assets/数据库文档/员工调动记录/02_dict_data.sql
Normal file
30
assets/数据库文档/员工调动记录/02_dict_data.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
-- =============================================
|
||||
-- 员工调动类型字典配置
|
||||
-- 字典类型: ccdi_transfer_type
|
||||
-- 说明: 员工调动类型枚举
|
||||
-- 作者: ruoyi
|
||||
-- 日期: 2026-02-10
|
||||
-- =============================================
|
||||
|
||||
-- 插入字典类型
|
||||
INSERT INTO `sys_dict_type` (dict_id, dict_name, dict_type, status, create_by, create_time, remark)
|
||||
VALUES (NULL, '调动类型', 'ccdi_transfer_type', '0', 'admin', NOW(), '员工调动类型:升职、降职、平调、轮岗、借调等');
|
||||
|
||||
-- 获取刚插入的dict_id(假设为111,实际使用时需要查询获取)
|
||||
SET
|
||||
@dict_type_id = LAST_INSERT_ID();
|
||||
|
||||
-- 插入字典数据
|
||||
INSERT INTO `sys_dict_data` (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status,
|
||||
create_by, create_time, remark)
|
||||
VALUES (1, '升职', 'PROMOTION', 'ccdi_transfer_type', '', 'primary', 'N', '0', 'admin', NOW(), '员工升职'),
|
||||
(2, '降职', 'DEMOPTION', 'ccdi_transfer_type', '', 'danger', 'N', '0', 'admin', NOW(), '员工降职'),
|
||||
(3, '平调', 'LATERAL', 'ccdi_transfer_type', '', 'info', 'N', '0', 'admin', NOW(), '平级调动'),
|
||||
(4, '轮岗', 'ROTATION', 'ccdi_transfer_type', '', 'warning', 'N', '0', 'admin', NOW(), '岗位轮换'),
|
||||
(5, '借调', 'SECONDMENT', 'ccdi_transfer_type', '', 'info', 'N', '0', 'admin', NOW(), '临时借调到其他部门'),
|
||||
(6, '部门调动', 'DEPARTMENT_CHANGE', 'ccdi_transfer_type', '', 'success', 'N', '0', 'admin', NOW(),
|
||||
'部门之间调动'),
|
||||
(7, '职位调整', 'POSITION_CHANGE', 'ccdi_transfer_type', '', 'primary', 'N', '0', 'admin', NOW(), '职位调整'),
|
||||
(8, '返岗', 'RETURN', 'ccdi_transfer_type', '', 'info', 'N', '0', 'admin', NOW(), '返回原岗位'),
|
||||
(9, '离职', 'TERMINATION', 'ccdi_transfer_type', '', 'danger', 'N', '0', 'admin', NOW(), '员工离职'),
|
||||
(10, '其他', 'OTHER', 'ccdi_transfer_type', '', 'info', 'N', '0', 'admin', NOW(), '其他类型调动');
|
||||
26
assets/数据库文档/员工调动记录/03_menu_permission.sql
Normal file
26
assets/数据库文档/员工调动记录/03_menu_permission.sql
Normal file
@@ -0,0 +1,26 @@
|
||||
-- =============================================
|
||||
-- 员工调动记录管理菜单权限配置
|
||||
-- 父级菜单: 信息维护(menu_id=2000)
|
||||
-- 作者: ruoyi
|
||||
-- 日期: 2026-02-10
|
||||
-- =============================================
|
||||
|
||||
-- 主菜单: 员工调动记录管理
|
||||
INSERT INTO `sys_menu` (menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES ('员工调动记录', 2000, 4, 'staffTransfer', 'ccdiStaffTransfer/index', NULL, NULL, 1, 0, 'C', '0', '0',
|
||||
'ccdi:staffTransfer:list', 'peoples', 'admin', NOW(), '员工调动记录管理菜单');
|
||||
|
||||
-- 获取刚插入的menu_id
|
||||
SET
|
||||
@menu_id = LAST_INSERT_ID();
|
||||
|
||||
-- 子菜单按钮权限
|
||||
INSERT INTO `sys_menu` (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, create_by,
|
||||
create_time)
|
||||
VALUES ('员工调动记录查询', @menu_id, 1, '', NULL, 'F', '0', '0', 'ccdi:staffTransfer:query', 'admin', NOW()),
|
||||
('员工调动记录新增', @menu_id, 2, '', NULL, 'F', '0', '0', 'ccdi:staffTransfer:add', 'admin', NOW()),
|
||||
('员工调动记录修改', @menu_id, 3, '', NULL, 'F', '0', '0', 'ccdi:staffTransfer:edit', 'admin', NOW()),
|
||||
('员工调动记录删除', @menu_id, 4, '', NULL, 'F', '0', '0', 'ccdi:staffTransfer:remove', 'admin', NOW()),
|
||||
('员工调动记录导出', @menu_id, 5, '', NULL, 'F', '0', '0', 'ccdi:staffTransfer:export', 'admin', NOW()),
|
||||
('员工调动记录导入', @menu_id, 6, '', NULL, 'F', '0', '0', 'ccdi:staffTransfer:import', 'admin', NOW());
|
||||
24
assets/数据库文档/员工调动记录/04_add_unique_index.sql
Normal file
24
assets/数据库文档/员工调动记录/04_add_unique_index.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
-- =============================================
|
||||
-- 员工调动记录唯一性约束
|
||||
-- 功能说明:根据 员工ID + 调动前部门ID + 调动后部门ID + 调动日期 创建唯一索引
|
||||
-- 创建时间:2026-02-11
|
||||
-- =============================================
|
||||
|
||||
-- 1. 检查并清理现有重复数据(保留最早创建的记录)
|
||||
DELETE
|
||||
t1 FROM ccdi_staff_transfer t1
|
||||
INNER JOIN ccdi_staff_transfer t2
|
||||
WHERE t1.staff_id = t2.staff_id
|
||||
AND t1.dept_id_before = t2.dept_id_before
|
||||
AND t1.dept_id_after = t2.dept_id_after
|
||||
AND t1.transfer_date = t2.transfer_date
|
||||
AND t1.id > t2.id;
|
||||
|
||||
-- 2. 添加唯一索引
|
||||
-- 创建唯一索引(MySQL不支持 DROP INDEX IF EXISTS 语法)
|
||||
CREATE UNIQUE INDEX uk_staff_transfer_date ON ccdi_staff_transfer (staff_id, dept_id_before, dept_id_after, transfer_date);
|
||||
|
||||
-- 执行结果说明
|
||||
-- 1. 第一条SQL会删除重复数据,只保留每组重复数据中ID最小的记录(最早创建的)
|
||||
-- 2. 第二条SQL删除可能存在的旧索引
|
||||
-- 3. 第三条SQL创建唯一索引,确保后续不会再插入重复数据
|
||||
27
assets/数据库文档/员工调动记录/05_fix_transfer_type_style.sql
Normal file
27
assets/数据库文档/员工调动记录/05_fix_transfer_type_style.sql
Normal file
@@ -0,0 +1,27 @@
|
||||
-- =============================================
|
||||
-- 修复调动类型字典样式问题
|
||||
-- 说明: 将 list_class 为 'default' 的值改为 'info'
|
||||
-- 使其在前端显示为带颜色的标签
|
||||
-- 作者: Claude
|
||||
-- 日期: 2026-02-11
|
||||
-- =============================================
|
||||
|
||||
-- 更新借调的样式: default -> info
|
||||
UPDATE sys_dict_data
|
||||
SET list_class = 'info'
|
||||
WHERE dict_type = 'ccdi_transfer_type'
|
||||
AND dict_value = 'SECONDMENT'
|
||||
AND list_class = 'default';
|
||||
|
||||
-- 更新其他的样式: default -> info
|
||||
UPDATE sys_dict_data
|
||||
SET list_class = 'info'
|
||||
WHERE dict_type = 'ccdi_transfer_type'
|
||||
AND dict_value = 'OTHER'
|
||||
AND list_class = 'default';
|
||||
|
||||
-- 验证更新结果
|
||||
SELECT dict_label, dict_value, list_class
|
||||
FROM sys_dict_data
|
||||
WHERE dict_type = 'ccdi_transfer_type'
|
||||
ORDER BY dict_sort;
|
||||
265
assets/数据库文档/员工调动记录/SQL执行报告.md
Normal file
265
assets/数据库文档/员工调动记录/SQL执行报告.md
Normal file
@@ -0,0 +1,265 @@
|
||||
# 员工调动记录模块 - SQL执行报告
|
||||
|
||||
**执行时间**: 2026-02-10
|
||||
**数据库**: ccdi (116.62.17.81:3306)
|
||||
**执行人**: admin
|
||||
|
||||
---
|
||||
|
||||
## ✅ 执行概览
|
||||
|
||||
| 脚本名称 | 执行状态 | 影响行数 | 说明 |
|
||||
|------------------------|------------|---------|------------------------|
|
||||
| 01_create_table.sql | ✅ 成功 | - | 创建ccdi_staff_transfer表 |
|
||||
| 02_dict_data.sql | ✅ 成功 | 11行 | 插入字典类型+10条字典数据 |
|
||||
| 03_menu_permission.sql | ✅ 成功 | 7行 | 插入主菜单+6个按钮权限 |
|
||||
| **总计** | **✅ 全部成功** | **18行** | **3个脚本全部执行成功** |
|
||||
|
||||
---
|
||||
|
||||
## 1️⃣ 建表SQL (01_create_table.sql)
|
||||
|
||||
### 执行结果: ✅ 成功
|
||||
|
||||
**表名**: `ccdi_staff_transfer`
|
||||
|
||||
**表结构验证**:
|
||||
|
||||
- ✅ 19个字段全部创建成功
|
||||
- ✅ 主键id (自增)
|
||||
- ✅ 5个索引创建成功:
|
||||
- idx_staff_id
|
||||
- idx_transfer_type
|
||||
- idx_transfer_date
|
||||
- idx_dept_before
|
||||
- idx_dept_after
|
||||
|
||||
**字段列表**:
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
|---------------------|--------------|-----------------|
|
||||
| id | bigint(20) | 主键ID (自增) |
|
||||
| staff_id | bigint(20) | 员工ID (NOT NULL) |
|
||||
| transfer_type | varchar(50) | 调动类型 |
|
||||
| transfer_sub_type | varchar(100) | 调动子类型 |
|
||||
| dept_id_before | bigint(20) | 调动前部门ID |
|
||||
| dept_name_before | varchar(200) | 调动前部门 |
|
||||
| grade_before | varchar(50) | 调动前职级 |
|
||||
| position_before | varchar(100) | 调动前岗位 |
|
||||
| salary_level_before | varchar(50) | 调动前薪酬等级 |
|
||||
| dept_id_after | bigint(20) | 调动后部门ID |
|
||||
| dept_name_after | varchar(200) | 调动后部门 |
|
||||
| grade_after | varchar(50) | 调动后职级 |
|
||||
| position_after | varchar(100) | 调动后岗位 |
|
||||
| salary_level_after | varchar(50) | 调动后薪酬等级 |
|
||||
| transfer_date | date | 调动日期 |
|
||||
| create_time | datetime | 记录创建时间 (自动) |
|
||||
| update_time | datetime | 记录更新时间 (自动更新) |
|
||||
| created_by | varchar(100) | 创建人 (NOT NULL) |
|
||||
| updated_by | varchar(100) | 更新人 |
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 字典数据SQL (02_dict_data.sql)
|
||||
|
||||
### 执行结果: ✅ 成功
|
||||
|
||||
**影响行数**: 11行 (1个字典类型 + 10条字典数据)
|
||||
|
||||
#### 2.1 字典类型
|
||||
|
||||
| dict_id | dict_name | dict_type | status |
|
||||
|---------|-----------|--------------------|--------|
|
||||
| 113 | 调动类型 | ccdi_transfer_type | 0 (正常) |
|
||||
|
||||
#### 2.2 字典数据 (10条)
|
||||
|
||||
| dict_code | dict_sort | dict_label | dict_value | list_class |
|
||||
|-----------|-----------|------------|-------------------|------------|
|
||||
| 150 | 1 | 升职 | PROMOTION | primary |
|
||||
| 151 | 2 | 降职 | DEMOPTION | danger |
|
||||
| 152 | 3 | 平调 | LATERAL | info |
|
||||
| 153 | 4 | 轮岗 | ROTATION | warning |
|
||||
| 154 | 5 | 借调 | SECONDMENT | default |
|
||||
| 155 | 6 | 部门调动 | DEPARTMENT_CHANGE | success |
|
||||
| 156 | 7 | 职位调整 | POSITION_CHANGE | primary |
|
||||
| 157 | 8 | 返岗 | RETURN | info |
|
||||
| 158 | 9 | 离职 | TERMINATION | danger |
|
||||
| 159 | 10 | 其他 | OTHER | default |
|
||||
|
||||
**验证结果**: ✅ 10条字典数据全部正确插入
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 菜单权限SQL (03_menu_permission.sql)
|
||||
|
||||
### 执行结果: ✅ 成功
|
||||
|
||||
**影响行数**: 7行 (1个主菜单 + 6个按钮权限)
|
||||
|
||||
#### 3.1 主菜单
|
||||
|
||||
| menu_id | menu_name | parent_id | path | component | menu_type |
|
||||
|---------|-----------|-------------|---------------|-------------------------|-----------|
|
||||
| 2060 | 员工调动记录 | 2000 (信息维护) | staffTransfer | ccdiStaffTransfer/index | C (菜单) |
|
||||
|
||||
#### 3.2 按钮权限 (6个)
|
||||
|
||||
| menu_id | menu_name | parent_id | perms | 说明 |
|
||||
|---------|-----------|-----------|---------------------------|------|
|
||||
| 2061 | 员工调动记录查询 | 2060 | ccdi:staffTransfer:query | 查询权限 |
|
||||
| 2062 | 员工调动记录新增 | 2060 | ccdi:staffTransfer:add | 新增权限 |
|
||||
| 2063 | 员工调动记录修改 | 2060 | ccdi:staffTransfer:edit | 修改权限 |
|
||||
| 2064 | 员工调动记录删除 | 2060 | ccdi:staffTransfer:remove | 删除权限 |
|
||||
| 2065 | 员工调动记录导出 | 2060 | ccdi:staffTransfer:export | 导出权限 |
|
||||
| 2066 | 员工调动记录导入 | 2060 | ccdi:staffTransfer:import | 导入权限 |
|
||||
|
||||
**验证结果**: ✅ 1个主菜单 + 6个按钮权限全部正确插入
|
||||
|
||||
---
|
||||
|
||||
## 📊 执行统计
|
||||
|
||||
### 数据库对象统计
|
||||
|
||||
| 对象类型 | 数量 | 详情 |
|
||||
|------|----|---------------------|
|
||||
| 数据表 | 1 | ccdi_staff_transfer |
|
||||
| 索引 | 5 | 主键 + 4个业务索引 |
|
||||
| 字典类型 | 1 | ccdi_transfer_type |
|
||||
| 字典数据 | 10 | 10种调动类型 |
|
||||
| 菜单 | 7 | 1个主菜单 + 6个按钮权限 |
|
||||
|
||||
### SQL语句统计
|
||||
|
||||
| SQL类型 | 数量 |
|
||||
|--------------|------------------|
|
||||
| CREATE TABLE | 1 |
|
||||
| INSERT | 3 (字典类型、字典数据、菜单) |
|
||||
| 总计 | 4条SQL语句 |
|
||||
|
||||
---
|
||||
|
||||
## ✅ 验证检查清单
|
||||
|
||||
- [x] 表结构验证: ccdi_staff_transfer表存在
|
||||
- [x] 字段验证: 19个字段全部正确
|
||||
- [x] 索引验证: 5个索引全部创建
|
||||
- [x] 字典验证: ccdi_transfer_type字典类型存在
|
||||
- [x] 字典数据验证: 10条字典数据全部正确
|
||||
- [x] 菜单验证: 主菜单menu_id=2060存在
|
||||
- [x] 权限验证: 6个按钮权限全部正确
|
||||
|
||||
---
|
||||
|
||||
## 🎯 下一步操作
|
||||
|
||||
### 1. 配置角色权限
|
||||
|
||||
登录系统,进入「系统管理 → 角色管理」,为相应角色勾选「员工调动记录」相关权限:
|
||||
|
||||
- ccdi:staffTransfer:query (查询)
|
||||
- ccdi:staffTransfer:add (新增)
|
||||
- ccdi:staffTransfer:edit (修改)
|
||||
- ccdi:staffTransfer:remove (删除)
|
||||
- ccdi:staffTransfer:export (导出)
|
||||
- ccdi:staffTransfer:import (导入)
|
||||
|
||||
### 2. 重启后端服务
|
||||
|
||||
```bash
|
||||
cd D:\ccdi\ccdi
|
||||
mvn clean compile
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
### 3. 重启前端服务
|
||||
|
||||
```bash
|
||||
cd D:\ccdi\ccdi\ruoyi-ui
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 4. 访问菜单
|
||||
|
||||
登录系统后,在左侧菜单找到「信息维护 → 员工调动记录」
|
||||
|
||||
### 5. 测试功能
|
||||
|
||||
- 测试新增调动记录
|
||||
- 测试查询列表
|
||||
- 测试修改记录
|
||||
- 测试删除记录
|
||||
- 测试导入导出
|
||||
- 测试字典下拉框
|
||||
|
||||
---
|
||||
|
||||
## 📝 注意事项
|
||||
|
||||
1. **员工数据依赖**: 该模块依赖`ccdi_base_staff`表,确保该表有测试数据
|
||||
2. **部门数据依赖**: 部门字段依赖`sys_dept`表
|
||||
3. **Redis依赖**: 导入功能依赖Redis,确保Redis服务正常运行
|
||||
4. **权限缓存**: 修改角色权限后,可能需要退出重新登录才能生效
|
||||
|
||||
---
|
||||
|
||||
## 🔧 样式修复记录 (2026-02-11)
|
||||
|
||||
### 问题说明
|
||||
|
||||
在前端展示时,调动类型中的**借调**和**其他**两个码值没有显示标签样式,只显示普通文本。
|
||||
|
||||
**原因分析**:
|
||||
|
||||
- DictTag 组件逻辑:当 `list_class = 'default'` 或为空时,只显示文本,不显示标签
|
||||
- 这两个值的 `list_class` 配置为 `'default'`
|
||||
|
||||
### 修复方案
|
||||
|
||||
将 `list_class` 从 `'default'` 改为 `'info'`,使它们显示为灰色标签。
|
||||
|
||||
### 执行脚本
|
||||
|
||||
**文件**: `05_fix_transfer_type_style.sql`
|
||||
|
||||
```sql
|
||||
-- 更新借调的样式: default -> info
|
||||
UPDATE sys_dict_data
|
||||
SET list_class = 'info'
|
||||
WHERE dict_type = 'ccdi_transfer_type'
|
||||
AND dict_value = 'SECONDMENT'
|
||||
AND list_class = 'default';
|
||||
|
||||
-- 更新其他的样式: default -> info
|
||||
UPDATE sys_dict_data
|
||||
SET list_class = 'info'
|
||||
WHERE dict_type = 'ccdi_transfer_type'
|
||||
AND dict_value = 'OTHER'
|
||||
AND list_class = 'default';
|
||||
```
|
||||
|
||||
### 修复后的样式配置
|
||||
|
||||
| dict_label | dict_value | 原list_class | 新list_class | 标签颜色 |
|
||||
|------------|-------------------|-------------|-------------|------|
|
||||
| 升职 | PROMOTION | primary | primary | 蓝色 |
|
||||
| 降职 | DEMOPTION | danger | danger | 红色 |
|
||||
| 平调 | LATERAL | info | info | 灰色 |
|
||||
| 轮岗 | ROTATION | warning | warning | 橙色 |
|
||||
| 借调 | SECONDMENT | default | **info** | 灰色 ✅ |
|
||||
| 部门调动 | DEPARTMENT_CHANGE | success | success | 绿色 |
|
||||
| 职位调整 | POSITION_CHANGE | primary | primary | 蓝色 |
|
||||
| 返岗 | RETURN | info | info | 灰色 |
|
||||
| 离职 | TERMINATION | danger | danger | 红色 |
|
||||
| 其他 | OTHER | default | **info** | 灰色 ✅ |
|
||||
|
||||
---
|
||||
|
||||
## ✨ 执行成功
|
||||
|
||||
所有SQL脚本已成功执行,数据库结构完整,可以开始使用员工调动记录管理模块!
|
||||
|
||||
**执行完成时间**: 2026-02-10
|
||||
**样式修复时间**: 2026-02-11
|
||||
**状态**: ✅ 数据库就绪,等待后端代码部署
|
||||
Reference in New Issue
Block a user