修改目录

This commit is contained in:
wkc
2026-03-03 16:14:16 +08:00
parent c8b041f4b9
commit 521bb80b2f
438 changed files with 15313 additions and 21773 deletions

View 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='员工调动记录表';

View 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(), '其他类型调动');

View 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());

View 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创建唯一索引确保后续不会再插入重复数据

View 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;

View 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
**状态**: ✅ 数据库就绪,等待后端代码部署