47 lines
1.6 KiB
Markdown
47 lines
1.6 KiB
Markdown
|
|
# xxl-job 任务:员工↔用户自动关联
|
|||
|
|
|
|||
|
|
## 部署后一次性操作
|
|||
|
|
|
|||
|
|
登录 xxl-job 调度中心(`http://49.232.154.205:xxxx/xxl-job-admin`,用户名 `admin`/`123456` 是默认,见 `ruoyi-extend/ruoyi-xxl-job-admin/`),执行者组选到本项目对应的执行器(一般叫 `xxl-job-executor-ruoyi`),然后:
|
|||
|
|
|
|||
|
|
**新增任务:**
|
|||
|
|
|
|||
|
|
| 字段 | 值 |
|
|||
|
|
|---|---|
|
|||
|
|
| 执行器 | xxl-job-executor-ruoyi(或本项目对应组) |
|
|||
|
|
| 任务描述 | 员工↔用户自动关联体检 |
|
|||
|
|
| 调度类型 | CRON |
|
|||
|
|
| Cron | `0 0 3 * * ?` (每天 03:00 执行一次) |
|
|||
|
|
| 运行模式 | BEAN |
|
|||
|
|
| JobHandler | `employeeUserLinkJob` |
|
|||
|
|
| 路由策略 | FIRST |
|
|||
|
|
| 阻塞处理策略 | 单机串行 |
|
|||
|
|
| 任务超时时间 | 300 秒 |
|
|||
|
|
| 失败重试次数 | 0 |
|
|||
|
|
|
|||
|
|
保存后点「启动」。
|
|||
|
|
|
|||
|
|
## 运行逻辑
|
|||
|
|
|
|||
|
|
- 扫全部 `hrm_employee.del_flag=0`
|
|||
|
|
- 已挂到有效 sys_user 且姓名对得上 → 跳过
|
|||
|
|
- 否则按 `emp_name` 匹配 `sys_user.nick_name` (兜底 `user_name`):
|
|||
|
|
- 候选唯一 + 手机号一致 → 自动挂
|
|||
|
|
- 候选唯一 + 手机号为空 → 也挂
|
|||
|
|
- 多个候选靠手机号唯一定位 → 挂
|
|||
|
|
- 其余情况 → 打「需人工」日志,不动数据
|
|||
|
|
|
|||
|
|
## 观察
|
|||
|
|
|
|||
|
|
xxl-job 调度中心「调度日志」里能看到每次执行的 stdout:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[已挂] emp_id=xxx emp_name=张三 user_id: null → 123456 (张三 / zhangsan)
|
|||
|
|
[需人工] emp_id=xxx emp_name=胡雪姣 current_user_id=1859249502579310593 候选=[] —— 候选唯一且手机匹配才能自动挂
|
|||
|
|
员工-用户关联体检完成:总数=54,跳过=53,自动修=0,需人工=1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 手动触发
|
|||
|
|
|
|||
|
|
在 xxl-job 后台可以点「执行一次」立即跑,不用等 03:00。
|