docs: 添加员工柜员号优化设计文档
- 移除tellerNo字段,将employeeId设置为柜员号 - 柜员号为7位数字,手动输入,唯一性校验 - 包含数据库、后端、前端、测试等完整设计方案 - 生成测试脚本和API文档更新计划
This commit is contained in:
455
doc/design/2026-02-05-员工柜员号优化设计.md
Normal file
455
doc/design/2026-02-05-员工柜员号优化设计.md
Normal file
@@ -0,0 +1,455 @@
|
||||
# 员工柜员号优化设计文档
|
||||
|
||||
**文档版本**: v1.0
|
||||
**创建日期**: 2026-02-05
|
||||
**设计目标**: 统一标识符,移除tellerNo字段,将employeeId设置为柜员号
|
||||
|
||||
---
|
||||
|
||||
## 一、需求概述
|
||||
|
||||
### 1.1 需求背景
|
||||
当前员工信息表中存在两个字段用于标识员工:
|
||||
- `employee_id`: 数据库主键,自增ID
|
||||
- `teller_no`: 柜员号,业务标识符
|
||||
|
||||
这种双标识符设计造成了字段冗余和业务混淆。
|
||||
|
||||
### 1.2 需求目标
|
||||
- **移除 `teller_no` 字段**,简化数据结构
|
||||
- **将 `employee_id` 改为手动输入的柜员号**(7位数字)
|
||||
- **统一标识符**,避免业务混淆
|
||||
- **保持数据完整性和业务连续性**
|
||||
|
||||
### 1.3 约束条件
|
||||
- 系统处于开发阶段,无正式生产数据
|
||||
- 柜员号必须为7位数字
|
||||
- 柜员号必须唯一,不允许重复
|
||||
- 柜员号为必填字段
|
||||
|
||||
---
|
||||
|
||||
## 二、数据库层设计
|
||||
|
||||
### 2.1 表结构修改
|
||||
|
||||
#### 删除字段
|
||||
```sql
|
||||
ALTER TABLE ccdi_employee DROP COLUMN teller_no;
|
||||
```
|
||||
|
||||
#### 修改主键字段
|
||||
```sql
|
||||
-- 移除自增属性
|
||||
ALTER TABLE ccdi_employee MODIFY employee_id BIGINT(20) NOT NULL;
|
||||
|
||||
-- 更新字段注释
|
||||
ALTER TABLE ccdi_employee MODIFY COLUMN employee_id BIGINT(20) NOT NULL COMMENT '员工ID(柜员号,7位数字)';
|
||||
```
|
||||
|
||||
#### 重建表方案(推荐,清空数据场景)
|
||||
```sql
|
||||
DROP TABLE IF EXISTS ccdi_employee;
|
||||
|
||||
CREATE TABLE ccdi_employee (
|
||||
employee_id BIGINT(20) NOT NULL COMMENT '员工ID(柜员号,7位数字)',
|
||||
name VARCHAR(100) NOT NULL COMMENT '姓名',
|
||||
dept_id BIGINT(20) DEFAULT NULL COMMENT '所属部门ID',
|
||||
id_card VARCHAR(18) NOT NULL COMMENT '身份证号',
|
||||
phone VARCHAR(11) DEFAULT NULL COMMENT '电话',
|
||||
hire_date DATE DEFAULT NULL COMMENT '入职时间',
|
||||
status CHAR(1) NOT NULL DEFAULT '0' COMMENT '状态(0在职 1离职)',
|
||||
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||||
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||||
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (employee_id),
|
||||
KEY idx_dept_id (dept_id),
|
||||
KEY idx_status (status),
|
||||
UNIQUE KEY uk_id_card (id_card)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';
|
||||
```
|
||||
|
||||
### 2.2 索引调整
|
||||
- 移除: `UNIQUE KEY teller_no`
|
||||
- 保留: `PRIMARY KEY (employee_id)` 天然保证唯一性
|
||||
|
||||
---
|
||||
|
||||
## 三、后端代码层设计
|
||||
|
||||
### 3.1 Entity 实体类 (CcdiEmployee.java)
|
||||
|
||||
**修改前**:
|
||||
```java
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long employeeId;
|
||||
|
||||
private String tellerNo;
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```java
|
||||
@TableId(type = IdType.INPUT) // 改为手动输入
|
||||
private Long employeeId;
|
||||
|
||||
// 删除 tellerNo 字段
|
||||
```
|
||||
|
||||
### 3.2 DTO 类修改
|
||||
|
||||
#### CcdiEmployeeAddDTO.java
|
||||
```java
|
||||
/** 员工ID(柜员号) */
|
||||
@NotNull(message = "柜员号不能为空")
|
||||
@Min(value = 1000000L, message = "柜员号必须为7位数字")
|
||||
@Max(value = 9999999L, message = "柜员号必须为7位数字")
|
||||
private Long employeeId;
|
||||
|
||||
// 删除 tellerNo 字段
|
||||
```
|
||||
|
||||
#### CcdiEmployeeEditDTO.java
|
||||
```java
|
||||
// employeeId 作为主键标识,通过路径参数传递,不在请求体中
|
||||
|
||||
// 删除 tellerNo 字段
|
||||
```
|
||||
|
||||
#### CcdiEmployeeQueryDTO.java
|
||||
```java
|
||||
/** 柜员号(精确查询) */
|
||||
@Min(value = 1000000L, message = "柜员号必须为7位数字")
|
||||
@Max(value = 9999999L, message = "柜员号必须为7位数字")
|
||||
private Long employeeId;
|
||||
|
||||
// 删除 tellerNo 字段
|
||||
```
|
||||
|
||||
### 3.3 VO 类修改 (CcdiEmployeeVO.java)
|
||||
|
||||
```java
|
||||
/** 员工ID(柜员号) */
|
||||
private Long employeeId;
|
||||
|
||||
// 删除 tellerNo 字段
|
||||
```
|
||||
|
||||
### 3.4 Service 层修改
|
||||
|
||||
#### 新增柜员号唯一性校验
|
||||
```java
|
||||
@Override
|
||||
public void checkEmployeeIdUnique(Long employeeId) {
|
||||
CcdiEmployee existing = baseMapper.selectById(employeeId);
|
||||
if (existing != null) {
|
||||
throw new ServiceException("柜员号已存在,请使用其他柜员号");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 新增员工方法调整
|
||||
```java
|
||||
@Override
|
||||
public void addEmployee(CcdiEmployeeAddDTO dto) {
|
||||
// 1. 校验柜员号唯一性
|
||||
checkEmployeeIdUnique(dto.getEmployeeId());
|
||||
|
||||
// 2. 校验身份证号唯一性
|
||||
checkIdCardUnique(dto.getIdCard());
|
||||
|
||||
// 3. 转换并保存
|
||||
CcdiEmployee employee = BeanUtil.copyProperties(dto, CcdiEmployee.class);
|
||||
baseMapper.insert(employee);
|
||||
}
|
||||
```
|
||||
|
||||
### 3.5 Mapper XML 修改
|
||||
|
||||
#### ResultMap 调整
|
||||
```xml
|
||||
<resultMap type="com.ruoyi.ccdi.domain.vo.CcdiEmployeeVO" id="CcdiEmployeeVOResult">
|
||||
<id property="employeeId" column="employee_id"/>
|
||||
<result property="name" column="name"/>
|
||||
<!-- 删除 tellerNo 映射 -->
|
||||
<result property="deptId" column="dept_id"/>
|
||||
<result property="deptName" column="dept_name"/>
|
||||
<result property="idCard" column="id_card"/>
|
||||
<result property="phone" column="phone"/>
|
||||
<result property="hireDate" column="hire_date"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
</resultMap>
|
||||
```
|
||||
|
||||
#### 查询 SQL 调整
|
||||
```xml
|
||||
<select id="selectEmployeePageWithDept" resultMap="CcdiEmployeeVOResult">
|
||||
SELECT
|
||||
e.employee_id, e.name, e.dept_id, e.id_card, e.phone,
|
||||
e.hire_date, e.status, e.create_time,
|
||||
d.dept_name
|
||||
FROM ccdi_employee e
|
||||
LEFT JOIN sys_dept d ON e.dept_id = d.dept_id
|
||||
<where>
|
||||
<if test="query.name != null and query.name != ''">
|
||||
AND e.name LIKE CONCAT('%', #{query.name}, '%')
|
||||
</if>
|
||||
<if test="query.employeeId != null">
|
||||
AND e.employee_id = #{query.employeeId}
|
||||
</if>
|
||||
<!-- 删除 teller_no 查询条件 -->
|
||||
<if test="query.deptId != null">
|
||||
AND e.dept_id = #{query.deptId}
|
||||
</if>
|
||||
<if test="query.idCard != null and query.idCard != ''">
|
||||
AND e.id_card LIKE CONCAT('%', #{query.idCard}, '%')
|
||||
</if>
|
||||
<if test="query.status != null and query.status != ''">
|
||||
AND e.status = #{query.status}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY e.create_time DESC
|
||||
</select>
|
||||
```
|
||||
|
||||
### 3.6 Controller 层修改
|
||||
|
||||
#### 接口参数调整
|
||||
- **POST /ccdi/employee**: 新增接口,接收 `employeeId` 作为必填字段
|
||||
- **PUT /ccdi/employee/{employeeId}**: 编辑接口,`employeeId` 作为路径参数不可修改
|
||||
- **GET /ccdi/employee/list**: 列表查询,移除 `tellerNo` 查询参数,保留 `employeeId` 精确查询
|
||||
|
||||
#### Swagger 注释更新
|
||||
```java
|
||||
@Operation(summary = "新增员工信息", description = "employeeId为柜员号,7位数字")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、前端代码层设计
|
||||
|
||||
### 4.1 查询表单调整
|
||||
|
||||
```vue
|
||||
<!-- 删除原来的 tellerNo 查询条件 -->
|
||||
|
||||
<!-- 新增:员工ID(柜员号)查询 -->
|
||||
<el-form-item label="柜员号" prop="employeeId">
|
||||
<el-input
|
||||
v-model="queryParams.employeeId"
|
||||
placeholder="请输入7位柜员号"
|
||||
clearable
|
||||
maxlength="7"
|
||||
oninput="value=value.replace(/[^\d]/g,'')"
|
||||
style="width: 240px"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
```
|
||||
|
||||
### 4.2 表格列调整
|
||||
|
||||
```vue
|
||||
<!-- 删除 -->
|
||||
<!-- <el-table-column label="柜员号" prop="tellerNo" /> -->
|
||||
|
||||
<!-- 新增 -->
|
||||
<el-table-column label="柜员号" align="center" prop="employeeId" :show-overflow-tooltip="true"/>
|
||||
```
|
||||
|
||||
### 4.3 新增/编辑对话框调整
|
||||
|
||||
```vue
|
||||
<!-- 新增模式:可输入 -->
|
||||
<el-form-item label="柜员号" prop="employeeId" v-if="!isEdit">
|
||||
<el-input
|
||||
v-model="form.employeeId"
|
||||
placeholder="请输入7位柜员号"
|
||||
clearable
|
||||
maxlength="7"
|
||||
oninput="value=value.replace(/[^\d]/g,'')"
|
||||
style="width: 240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 编辑模式:只读 -->
|
||||
<el-form-item label="柜员号" prop="employeeId" v-if="isEdit">
|
||||
<el-input v-model="form.employeeId" disabled style="width: 240px"/>
|
||||
</el-form-item>
|
||||
```
|
||||
|
||||
### 4.4 JavaScript 数据结构
|
||||
|
||||
```javascript
|
||||
data() {
|
||||
return {
|
||||
queryParams: {
|
||||
name: null,
|
||||
employeeId: null, // 替代 tellerNo
|
||||
deptId: null,
|
||||
idCard: null,
|
||||
status: null
|
||||
},
|
||||
form: {
|
||||
employeeId: null, // 替代 tellerNo
|
||||
name: null,
|
||||
deptId: null,
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.5 表单校验规则
|
||||
|
||||
```javascript
|
||||
rules: {
|
||||
employeeId: [
|
||||
{ required: true, message: "柜员号不能为空", trigger: "blur" },
|
||||
{ pattern: /^\d{7}$/, message: "柜员号必须为7位数字", trigger: "blur" }
|
||||
],
|
||||
// 其他规则...
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、测试方案
|
||||
|
||||
### 5.1 新增员工测试
|
||||
|
||||
| 测试场景 | 输入数据 | 预期结果 |
|
||||
|---------|---------|---------|
|
||||
| 正常场景 | 柜员号: 1000000 | 新增成功 |
|
||||
| 格式错误-少于7位 | 柜员号: 123456 | 提示"柜员号必须为7位数字" |
|
||||
| 格式错误-多于7位 | 柜员号: 12345678 | 提示"柜员号必须为7位数字" |
|
||||
| 格式错误-非数字 | 柜员号: 123456a | 提示"柜员号必须为7位数字" |
|
||||
| 唯一性冲突 | 重复的柜员号 | 提示"柜员号已存在" |
|
||||
| 必填校验 | 柜员号为空 | 提示"柜员号不能为空" |
|
||||
|
||||
### 5.2 编辑员工测试
|
||||
|
||||
| 测试场景 | 操作 | 预期结果 |
|
||||
|---------|------|---------|
|
||||
| 正常编辑 | 修改其他字段,柜员号不可变 | 编辑成功,柜员号不变 |
|
||||
| 只读验证 | 尝试修改柜员号 | 柜员号输入框禁用 |
|
||||
|
||||
### 5.3 查询测试
|
||||
|
||||
| 测试场景 | 输入 | 预期结果 |
|
||||
|---------|------|---------|
|
||||
| 精确查询 | 输入7位柜员号 | 返回匹配的员工记录 |
|
||||
| 列表显示 | 查看列表 | 显示employeeId作为柜员号 |
|
||||
|
||||
---
|
||||
|
||||
## 六、文档更新清单
|
||||
|
||||
### 6.1 API 文档更新
|
||||
- **文件路径**: `doc/api/员工信息管理API文档.md`
|
||||
- **更新内容**:
|
||||
1. 新增接口:移除 `tellerNo`,新增 `employeeId` 参数说明
|
||||
2. 编辑接口:更新路径参数为 `employeeId`
|
||||
3. 查询接口:移除 `tellerNo` 查询参数,新增 `employeeId`
|
||||
4. 返回数据:移除 `tellerNo` 字段
|
||||
5. 字段说明表:更新 `employeeId` 为"员工ID(柜员号,7位数字)"
|
||||
|
||||
### 6.2 测试脚本
|
||||
- **文件路径**: `doc/test/2026-02-05-employee-modify-test.sh`
|
||||
- **测试账号**: username: admin, password: admin123
|
||||
- **测试接口**: `/login/test` 获取 token
|
||||
|
||||
### 6.3 数据库脚本
|
||||
- **文件路径**: `sql/modify_employee_id_to_teller_no.sql`
|
||||
- **执行顺序**:
|
||||
1. 删除 `teller_no` 字段
|
||||
2. 修改 `employee_id` 为非自增
|
||||
3. 更新字段注释
|
||||
|
||||
---
|
||||
|
||||
## 七、实施步骤
|
||||
|
||||
### 7.1 数据库修改
|
||||
1. 备份现有数据库(如有数据)
|
||||
2. 执行 SQL 脚本修改表结构
|
||||
3. 验证表结构修改成功
|
||||
|
||||
### 7.2 后端代码修改
|
||||
1. 修改 Entity 实体类
|
||||
2. 修改 DTO 类(Add/Edit/Query)
|
||||
3. 修改 VO 类
|
||||
4. 修改 Service 层,添加唯一性校验
|
||||
5. 修改 Mapper XML
|
||||
6. 修改 Controller 层
|
||||
7. 编译后端项目,确保无错误
|
||||
|
||||
### 7.3 前端代码修改
|
||||
1. 修改查询表单
|
||||
2. 修改表格列
|
||||
3. 修改新增/编辑对话框
|
||||
4. 修改 JavaScript 数据结构和方法
|
||||
5. 添加表单校验规则
|
||||
6. 编译前端项目,确保无错误
|
||||
|
||||
### 7.4 测试验证
|
||||
1. 执行测试脚本
|
||||
2. 验证新增功能
|
||||
3. 验证编辑功能
|
||||
4. 验证查询功能
|
||||
5. 验证唯一性校验
|
||||
6. 验证格式校验
|
||||
7. 生成测试报告
|
||||
|
||||
### 7.5 文档更新
|
||||
1. 更新 API 文档
|
||||
2. 更新测试报告
|
||||
3. 提交代码到版本控制
|
||||
|
||||
---
|
||||
|
||||
## 八、风险评估与应对
|
||||
|
||||
### 8.1 风险点
|
||||
1. **数据迁移风险**: 如果有正式数据,需要迁移方案
|
||||
- **应对**: 当前为开发阶段,无正式数据,直接修改
|
||||
|
||||
2. **接口兼容性**: 前端调用可能受影响
|
||||
- **应对**: 同步修改前端代码和接口调用
|
||||
|
||||
3. **业务逻辑依赖**: 其他模块可能引用 `tellerNo`
|
||||
- **应对**: 全局搜索 `tellerNo` 引用,同步修改
|
||||
|
||||
### 8.2 回滚方案
|
||||
如果修改后出现问题,可以:
|
||||
1. 恢复数据库表结构(添加回 `teller_no` 字段)
|
||||
2. 恢复代码到修改前的版本
|
||||
3. 恢复前端代码到修改前的版本
|
||||
|
||||
---
|
||||
|
||||
## 九、验收标准
|
||||
|
||||
### 9.1 功能验收
|
||||
- ✅ 数据库 `teller_no` 字段已删除
|
||||
- ✅ `employee_id` 改为非自增,手动输入
|
||||
- ✅ 后端代码所有 `tellerNo` 引用已移除
|
||||
- ✅ 前端页面显示 `employeeId` 作为柜员号
|
||||
- ✅ 新增员工时必须输入7位数字柜员号
|
||||
- ✅ 柜员号唯一性校验生效
|
||||
- ✅ 柜员号格式校验生效
|
||||
- ✅ 编辑时柜员号不可修改
|
||||
|
||||
### 9.2 性能验收
|
||||
- ✅ 接口响应时间无明显变化
|
||||
- ✅ 数据库查询效率正常
|
||||
|
||||
### 9.3 文档验收
|
||||
- ✅ API 文档已更新
|
||||
- ✅ 测试脚本已生成
|
||||
- ✅ 测试报告已生成
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
28
doc/docs/ccdi_fmy_relation_person.csv
Normal file
28
doc/docs/ccdi_fmy_relation_person.csv
Normal file
@@ -0,0 +1,28 @@
|
||||
1.人员家庭关系表:ccdi_fmy_relation_person,,,,,,
|
||||
序号,字段名,类型,默认值,是否可为空,是否主键,注释
|
||||
1,id,BIGINT,-,否,自动递增,主键,唯一标识
|
||||
2,person_id,VARCHAR,-,否,-,员工身份证号,关联员工表的外键
|
||||
3,relation_type,VARCHAR,-,否,-,关系类型,如:配偶、子女、父母、兄弟姐妹等
|
||||
4,relation_name,VARCHAR,-,否,-,关系人姓名
|
||||
5,gender,CHAR,-,是,-,M:男 F:女 O:其他
|
||||
6,birth_date,DATE,-,是,-,关系人出生日期
|
||||
7,relation_cert_type,VARCHAR,-,是,-,身份证、护照、军官证等
|
||||
8,relation_cert_no,VARCHAR,-,是,-,证件号码
|
||||
9,mobile_phone1,VARCHAR,-,是,-,手机号码1
|
||||
10,mobile_phone2,VARCHAR,-,是,-,手机号码2
|
||||
11,wechat_no1,VARCHAR,-,是,-,微信名称1
|
||||
12,wechat_no2,VARCHAR,-,是,-,微信名称2
|
||||
13,wechat_no3,VARCHAR,-,是,-,微信名称3
|
||||
14,contact_address,VARCHAR,-,是,-,详细联系地址
|
||||
15,relation_desc,VARCHAR,-,是,-,关系详细描述
|
||||
16,status,INT,1,否,-,关系是否有效:0 - 无效、1 - 有效(默认有效)
|
||||
17,effective_date,DATETIME,-,是,-,关系生效日期
|
||||
18,invalid_date,DATETIME,,是,,关系失效日期
|
||||
19,remark,TEXT,-,是,-,备注信息
|
||||
20,data_source,VARCHAR(50),,是,否,数据来源(系统名称)
|
||||
21,is_emp_family,TINYINT(1),0,否,否,是否是员工的家庭关系:0-否 1-是
|
||||
22,is_cust_family,TINYINT(1),0,否,否,是否是信贷客户的家庭关系:0-否 1-是
|
||||
23,created_by,VARCHAR,-,否,-,记录创建人
|
||||
24,updated_by,VARCHAR,-,是,-,记录更新人
|
||||
25,create_time,DATETIME,,否,,记录创建时间
|
||||
26,update_time,DATETIME,-,是,-,记录更新时间
|
||||
|
38
doc/docs/ccdi_purchase_transaction.csv
Normal file
38
doc/docs/ccdi_purchase_transaction.csv
Normal file
@@ -0,0 +1,38 @@
|
||||
6.员工采购交易信息表:ccdi_purchase_transaction,,,,,,
|
||||
序号,字段名,类型,默认值,是否可为空,是否主键,注释
|
||||
1,purchase_id,VARCHAR(32),,否,是,采购事项ID
|
||||
2,purchase_category,VARCHAR(50),-,否,否,采购类别
|
||||
3,project_name,VARCHAR(200),-,是,否,项目名称
|
||||
4,subject_name,VARCHAR(200),-,否,否,标的物名称
|
||||
5,subject_desc,TEXT,-,是,否,标的物描述
|
||||
6,purchase_qty,"DECIMAL(12,4)",1,否,否,采购数量
|
||||
7,budget_amount,"DECIMAL(18,2)",-,否,否,预算金额
|
||||
8,bid_amount,"DECIMAL(18,2)",-,是,否,中标金额
|
||||
9,actual_amount,"DECIMAL(18,2)",-,是,否,实际采购金额
|
||||
10,contract_amount,"DECIMAL(18,2)",-,是,否,合同金额
|
||||
11,settlement_amount,"DECIMAL(18,2)",-,是,否,结算金额
|
||||
12,purchase_method,VARCHAR(50),-,否,否,采购方式
|
||||
13,supplier_name,VARCHAR(200),-,是,否,中标供应商名称
|
||||
14,contact_person,VARCHAR(50),-,是,否,供应商联系人
|
||||
15,contact_phone,VARCHAR(20),-,是,否,供应商联系电话
|
||||
16,supplier_uscc,VARCHAR(18),-,是,否,供应商统一信用代码
|
||||
17,supplier_bank_account,VARCHAR(50),-,是,否,供应商银行账户
|
||||
18,apply_date,DATE,-,否,否,采购申请日期(或立项日期)
|
||||
19,plan_approve_date,DATE,-,是,否,采购计划批准日期
|
||||
20,announce_date,DATE,-,是,否,采购公告发布日期
|
||||
21,bid_open_date,DATE,-,是,否,开标日期
|
||||
22,contract_sign_date,DATE,-,是,否,合同签订日期
|
||||
23,expected_delivery_date,DATE,-,是,否,预计交货日期
|
||||
24,actual_delivery_date,DATE,-,是,否,实际交货日期
|
||||
25,acceptance_date,DATE,-,是,否,验收日期
|
||||
26,settlement_date,DATE,-,是,否,结算日期
|
||||
27,applicant_id,VARCHAR(7),-,否,否,申请人工号
|
||||
28,applicant_name,VARCHAR(50),-,否,否,申请人姓名
|
||||
29,apply_department,VARCHAR(100),-,否,否,申请部门
|
||||
30,purchase_leader_id,VARCHAR(7),-,是,否,采购负责人工号
|
||||
31,purchase_leader_name,VARCHAR(50),-,是,否,采购负责人姓名
|
||||
32,purchase_department,VARCHAR(100),-,是,否,采购部门
|
||||
33,create_time,DATETIME,CURRENT_TIMESTAMP,否,否,创建时间
|
||||
34,update_time,DATETIME,CURRENT_TIMESTAMP,否,否,更新时间
|
||||
35,created_by,VARCHAR(50),-,否,否,创建人
|
||||
36,updated_by,VARCHAR(50),-,是,否,更新人
|
||||
|
22
doc/docs/ccdi_staff_recruitment.csv
Normal file
22
doc/docs/ccdi_staff_recruitment.csv
Normal file
@@ -0,0 +1,22 @@
|
||||
4.员工招聘信息表:ccdi_staff_recruitment,,,,,,
|
||||
序号,字段名,类型,默认值,是否可为空,是否主键,注释
|
||||
1,recruit_id,VARCHAR(32),,否,是,招聘项目编号
|
||||
2,recruit_name,VARCHAR(100),,否,否,招聘项目名称
|
||||
3,pos_name,VARCHAR(100),,否,否,职位名称
|
||||
4,pos_category,VARCHAR(50),,否,否,职位类别
|
||||
5,pos_desc,TEXT,,否,否,职位描述
|
||||
6,cand_name,VARCHAR(20),,否,否,应聘人员姓名
|
||||
7,cand_edu,VARCHAR(20),,否,否,应聘人员学历
|
||||
8,cand_id,VARCHAR(18),,否,否,应聘人员证件号码
|
||||
9,cand_school,VARCHAR(50),,否,否,应聘人员毕业院校
|
||||
10,cand_major,VARCHAR(30),,否,否,应聘人员专业
|
||||
11,cand_grad,VARCHAR(6),,否,否,应聘人员毕业年月
|
||||
12,admit_status,VARCHAR(10),,否,否,记录录用情况:录用、未录用、放弃等
|
||||
13,interviewer_name1,VARCHAR(20),,是,否,面试官1姓名
|
||||
14,interviewer_id1,VARCHAR(10),,是,否,面试官1工号
|
||||
13,interviewer_name2,VARCHAR(20),,是,否,面试官2姓名
|
||||
14,interviewer_id2,VARCHAR(10),,是,否,面试官2工号
|
||||
16,created_by,VARCHAR(20),-,否,否,记录创建人
|
||||
17,updated_by,VARCHAR(20),-,是,否,记录更新人
|
||||
18,create_time,VARCHAR(10),0000-00-00,是,否,创建时间
|
||||
19,update_time,VARCHAR(10),0000-00-00,是,否,更新时间
|
||||
|
18
doc/docs/ccdi_staff_transfer.csv
Normal file
18
doc/docs/ccdi_staff_transfer.csv
Normal file
@@ -0,0 +1,18 @@
|
||||
5.员工调动记录表:ccdi_staff_transfer,,,,,,
|
||||
序号,字段名,类型,默认值,是否可为空,是否主键,注释
|
||||
1,num_id,string,,否,是,员工工号(主键)
|
||||
2,transfer_type,VARCHAR,,是,否,"调动类型:PROMOTION:升职, DEMOTION:降职, LATERAL:平调, ROTATION:轮岗, SECONDMENT:借调, DEPARTMENT_CHANGE:部门调动, POSITION_CHANGE:职位调整, RETURN:返岗, TERMINATION:离职, OTHER:其他"
|
||||
3,transfer_sub_type,VARCHAR,,是,否,"调动子类型,双聘调动、临时调动等"
|
||||
4,dept_id_before,VARCHAR,,是,否,调动前部门ID
|
||||
5,dept_name_before,VARCHAR,,是,否,调动前部门
|
||||
6,grade_before,VARCHAR,,是,否,调动前职级
|
||||
7,position_before,VARCHAR,,是,否,调动前岗位
|
||||
8,salary_level_before,VARCHAR,,是,否,调动前薪酬等级
|
||||
9,dept_id_after,VARCHAR,0000-00-00,是,否,调动后部门ID
|
||||
10,dept_name_after,VARCHAR,0000-00-00,是,否,调动后部门
|
||||
11,grade_after,VARCHAR,,是,否,调动后职级
|
||||
12,position_after,VARCHAR,,是,否,调动后岗位
|
||||
13,salary_level_after,VARCHAR,,是,否,调动后薪酬等级
|
||||
14,transfer_date,DATE,,是,否,调动日期
|
||||
15,create_time,DATETIME,-,否,当前时间,记录创建时间
|
||||
16,update_time,DATETIME,-,否,当前时间,记录更新时间
|
||||
|
13
sql/remove_employee_relative.sql
Normal file
13
sql/remove_employee_relative.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* 员工亲属功能移除 - 删除亲属表
|
||||
* 执行日期: 2026-02-05
|
||||
* 说明: 移除员工亲属相关功能,删除亲属表
|
||||
*/
|
||||
|
||||
-- 删除员工亲属表
|
||||
DROP TABLE IF EXISTS `ccdi_employee_relative`;
|
||||
|
||||
-- 删除亲属关系字典数据(如果存在)
|
||||
-- 注意:根据实际情况确认字典表名称和类型
|
||||
-- DELETE FROM sys_dict_data WHERE dict_type = 'ccdi_relative_relationship';
|
||||
-- DELETE FROM sys_dict_type WHERE dict_type = 'ccdi_relative_relationship';
|
||||
Reference in New Issue
Block a user