Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-module-job
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-module-job
Commits
f6e738f7
提交
f6e738f7
authored
12月 09, 2025
作者:
000516
浏览文件
操作
浏览文件
下载
差异文件
飞书人员离职审批完成后,取审批中离职日期,根据离职日期第二天禁用勤策账号
上级
46c00430
1a542650
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
129 行增加
和
23 行删除
+129
-23
ISysUserDao.java
src/main/java/com/sfa/job/domain/system/dao/ISysUserDao.java
+7
-0
SysUserDaoImpl.java
...in/java/com/sfa/job/domain/system/dao/SysUserDaoImpl.java
+11
-0
SysUserMapper.java
.../java/com/sfa/job/domain/system/mapper/SysUserMapper.java
+6
-0
EventCallbackServiceImpl.java
.../com/sfa/job/service/feishu/EventCallbackServiceImpl.java
+18
-21
DeptAndUserServiceImpl.java
...va/com/sfa/job/service/system/DeptAndUserServiceImpl.java
+43
-1
IDeptAndUserService.java
.../java/com/sfa/job/service/system/IDeptAndUserService.java
+5
-0
SystemTask.java
src/main/java/com/sfa/job/xxljob/system/SystemTask.java
+10
-0
SysUserMapper.xml
src/main/resources/mapper/master/SysUserMapper.xml
+8
-0
EventCallbackServiceImplTest.java
.../sfa/job/service/feishu/EventCallbackServiceImplTest.java
+11
-1
DeptAndUserServiceImplTest.java
...om/sfa/job/service/system/DeptAndUserServiceImplTest.java
+10
-0
没有找到文件。
src/main/java/com/sfa/job/domain/system/dao/ISysUserDao.java
浏览文件 @
f6e738f7
...
...
@@ -2,6 +2,8 @@ package com.sfa.job.domain.system.dao;
import
com.alibaba.fastjson2.JSONObject
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -17,4 +19,9 @@ public interface ISysUserDao {
void
deleteUser
(
String
employeeNo
);
Map
<
String
,
String
>
getUserNoAndNameMap
();
void
updateOffboardDate
(
String
employeeNo
,
Date
offboardDate
);
List
<
String
>
selectResignedUsers
();
}
src/main/java/com/sfa/job/domain/system/dao/SysUserDaoImpl.java
浏览文件 @
f6e738f7
...
...
@@ -7,6 +7,7 @@ import com.sfa.job.domain.system.mapper.SysUserMapper;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -65,4 +66,14 @@ public class SysUserDaoImpl implements ISysUserDao{
List
<
HashMap
<
String
,
String
>>
userNoAndNameMap
=
sysUserMapper
.
getUserNoAndNameMap
();
return
userNoAndNameMap
.
stream
().
collect
(
Collectors
.
toMap
(
m
->
m
.
get
(
"user_name"
),
m
->
m
.
get
(
"nick_name"
)));
}
@Override
public
void
updateOffboardDate
(
String
employeeNo
,
Date
offboardDate
)
{
sysUserMapper
.
updateOffboardDate
(
employeeNo
,
offboardDate
);
}
@Override
public
List
<
String
>
selectResignedUsers
()
{
return
sysUserMapper
.
selectResignedUsers
();
}
}
src/main/java/com/sfa/job/domain/system/mapper/SysUserMapper.java
浏览文件 @
f6e738f7
...
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -25,6 +26,11 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
void
updateStatus
(
@Param
(
"employeeNo"
)
String
employeeNo
);
List
<
HashMap
<
String
,
String
>>
getUserNoAndNameMap
();
void
updateOffboardDate
(
@Param
(
"employeeNo"
)
String
employeeNo
,
@Param
(
"offboardDate"
)
Date
offboardDate
);
List
<
String
>
selectResignedUsers
();
}
...
...
src/main/java/com/sfa/job/service/feishu/EventCallbackServiceImpl.java
浏览文件 @
f6e738f7
package
com
.
sfa
.
job
.
service
.
feishu
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.lark.oapi.service.corehr.v1.model.Offboarding
;
import
com.lark.oapi.service.corehr.v2.model.*
;
import
com.sfa.common.core.enums.promotion.PlanStatus
;
import
com.sfa.common.core.utils.DateUtils
;
import
com.sfa.common.core.utils.sdk.FeiShuUtil
;
import
com.sfa.job.domain.promotion.dao.IActivityPlanDao
;
import
com.sfa.job.domain.qince.dao.IQinceEmployeeDao
;
import
com.sfa.job.domain.system.dao.ISysDeptDao
;
import
com.sfa.job.domain.system.dao.ISysEventLogDao
;
import
com.sfa.job.domain.system.dao.ISysUserDao
;
import
com.sfa.job.pojo.feishu.event.EventCallBackDto
;
import
com.sfa.job.pojo.promotion.response.ActivityPlanApprovalDto
;
import
com.sfa.job.pojo.response.SysEventLogDto
;
import
com.sfa.job.
util.QinCeUtils
;
import
com.sfa.job.
service.system.IDeptAndUserService
;
import
com.sfa.job.util.T100Util
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.
Map
;
import
java.util.
Date
;
import
java.util.Objects
;
/**
...
...
@@ -39,13 +40,11 @@ public class EventCallbackServiceImpl implements IEventCallbackService{
@Autowired
private
ISysEventLogDao
sysEventLogDao
;
@Autowired
private
I
QinceEmployeeDao
qinceEmployeeDao
;
private
I
DeptAndUserService
deptAndUserService
;
@Autowired
private
FeiShuUtil
feiShuUtil
;
@Autowired
private
T100Util
t100Util
;
@Autowired
private
QinCeUtils
qinCeUtils
;
@Override
public
void
planCP
(
EventCallBackDto
.
Event
event
)
{
...
...
@@ -194,27 +193,25 @@ public class EventCallbackServiceImpl implements IEventCallbackService{
*/
@Override
public
void
userResigned
(
String
employmentId
)
{
// 根据employmentId查询离职信息,如果没有搜索到离职信息,则直接禁用
Date
offboardDate
=
null
;
Offboarding
offboarding
=
feiShuUtil
.
searchOffboardings
(
employmentId
);
if
(!
Objects
.
isNull
(
offboarding
)){
String
offboardingDate
=
offboarding
.
getOffboardingInfo
().
getOffboardingDate
();
offboardDate
=
DateUtils
.
parseDate
(
offboardingDate
);
}
Employee
emp
=
feiShuUtil
.
getEmployeeReq
(
employmentId
);
String
employeeNo
=
emp
.
getEmployeeNumber
();
if
(
StringUtils
.
isEmpty
(
employeeNo
)){
return
;
}
// 链路中心人员离职 - 根据工号
sysUserDao
.
deleteUser
(
employeeNo
);
// 勤策人员离职 - 根据工号+勤策ID
try
{
String
empQcId
=
qinceEmployeeDao
.
getQcIdByEmpCode
(
employeeNo
);
if
(
StringUtils
.
isEmpty
(
empQcId
)){
return
;
}
Map
<
String
,
Object
>
map
=
qinCeUtils
.
disabledUserParams
(
employeeNo
,
empQcId
);
String
url
=
qinCeUtils
.
builderUrl
(
QinCeUtils
.
MODIFY_USER
,
map
);
qinCeUtils
.
postQC
(
url
,
map
);
qinceEmployeeDao
.
userResigned
(
empQcId
);
}
catch
(
Exception
e
){
log
.
error
(
"勤策接口禁用用户异常,详情:{}"
,
e
.
getMessage
());
sysUserDao
.
updateOffboardDate
(
employeeNo
,
offboardDate
);
// 判定offboardDate 是否是以前
if
(!
offboardDate
.
before
(
new
Date
())){
return
;
}
deptAndUserService
.
userResigned
(
employeeNo
);
}
private
void
userAUT100
(
Employee
emp
){
...
...
src/main/java/com/sfa/job/service/system/DeptAndUserServiceImpl.java
浏览文件 @
f6e738f7
...
...
@@ -3,14 +3,19 @@ package com.sfa.job.service.system;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.common.core.utils.sdk.FeiShuUtil
;
import
com.sfa.job.domain.qince.dao.IQinceEmployeeDao
;
import
com.sfa.job.domain.system.dao.ISysDeptDao
;
import
com.sfa.job.domain.system.dao.ISysUserDao
;
import
com.sfa.job.domain.system.entity.SysDept
;
import
com.sfa.job.util.QinCeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author : liqiulin
...
...
@@ -27,7 +32,10 @@ public class DeptAndUserServiceImpl implements IDeptAndUserService {
private
ISysDeptDao
sysDeptDao
;
@Autowired
private
ISysUserDao
sysUserDao
;
@Autowired
private
IQinceEmployeeDao
qinceEmployeeDao
;
@Autowired
private
QinCeUtils
qinCeUtils
;
/**
* 从飞书同步全量部门信息
*/
...
...
@@ -66,6 +74,40 @@ public class DeptAndUserServiceImpl implements IDeptAndUserService {
sysUserDao
.
updateDeptLeader
();
}
@Override
public
void
userResigned
(
String
employeeNo
)
{
//1、链路中心人员离职 - 根据工号
sysUserDao
.
deleteUser
(
employeeNo
);
//2、勤策人员离职 - 根据工号+勤策ID
try
{
String
empQcId
=
qinceEmployeeDao
.
getQcIdByEmpCode
(
employeeNo
);
if
(
StringUtils
.
isEmpty
(
empQcId
)){
return
;
}
Map
<
String
,
Object
>
map
=
qinCeUtils
.
disabledUserParams
(
employeeNo
,
empQcId
);
String
url
=
qinCeUtils
.
builderUrl
(
QinCeUtils
.
MODIFY_USER
,
map
);
qinCeUtils
.
postQC
(
url
,
map
);
qinceEmployeeDao
.
userResigned
(
empQcId
);
}
catch
(
Exception
e
){
log
.
error
(
"勤策接口禁用用户异常,详情:{}"
,
e
.
getMessage
());
}
}
@Override
public
void
usersResigned
()
{
// 查询离职日期是今日及以前,且状态是未离职人员
List
<
String
>
resignedUsers
=
sysUserDao
.
selectResignedUsers
();
if
(
CollectionUtils
.
isEmpty
(
resignedUsers
)){
log
.
info
(
"今日暂无需要处理的离职人员;"
);
return
;
}
for
(
String
userCode
:
resignedUsers
){
userResigned
(
userCode
);
}
}
/**
* 同步二级以下部门
*/
...
...
src/main/java/com/sfa/job/service/system/IDeptAndUserService.java
浏览文件 @
f6e738f7
...
...
@@ -10,4 +10,9 @@ public interface IDeptAndUserService {
void
deptAll
();
void
userAll
();
void
userResigned
(
String
employeeNo
);
void
usersResigned
();
}
src/main/java/com/sfa/job/xxljob/system/SystemTask.java
浏览文件 @
f6e738f7
...
...
@@ -37,4 +37,14 @@ public class SystemTask {
deptAndUserService
.
userAll
();
log
.
info
(
"结束同步飞书用户数据"
);
}
/**
* 同步人员离职
*/
@XxlJob
(
"sync_user_resigned"
)
public
void
userResigned
()
{
log
.
info
(
"开始处理离职人员"
);
deptAndUserService
.
usersResigned
();
log
.
info
(
"结束处理离职人员"
);
}
}
src/main/resources/mapper/master/SysUserMapper.xml
浏览文件 @
f6e738f7
...
...
@@ -102,4 +102,12 @@
from sys_user where del_flag = 0
</select>
<update
id=
"updateOffboardDate"
>
update sys_user set offboard_date = #{offboardDate} where user_name = #{employeeNo}
</update>
<select
id=
"selectResignedUsers"
resultType=
"java.util.List"
>
select user_name from sys_user where del_flag = '0' and offboard_date
<
= current_date();
</select>
</mapper>
src/test/java/com/sfa/job/service/feishu/EventCallbackServiceImplTest.java
浏览文件 @
f6e738f7
package
com
.
sfa
.
job
.
service
.
feishu
;
import
com.sfa.common.core.utils.DateUtils
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.Date
;
import
static
org
.
junit
.
Assert
.*;
/**
...
...
@@ -21,6 +24,12 @@ public class EventCallbackServiceImplTest {
@Test
public
void
userResigned
()
{
eventCallbackService
.
userResigned
(
""
);
eventCallbackService
.
userResigned
(
"7566837232418670089"
);
}
public
static
void
main
(
String
[]
args
)
{
String
offboardingDate
=
"2025-11-28"
;
Date
date
=
DateUtils
.
parseDate
(
offboardingDate
);
System
.
out
.
println
(
date
);
}
}
\ No newline at end of file
src/test/java/com/sfa/job/service/system/DeptAndUserServiceImplTest.java
浏览文件 @
f6e738f7
package
com
.
sfa
.
job
.
service
.
system
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
junit
.
Assert
.*;
...
...
@@ -9,9 +13,14 @@ import static org.junit.Assert.*;
* @date : 2024-12-10 15
* @describe :
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
DeptAndUserServiceImplTest
{
@Autowired
private
IDeptAndUserService
deptAndUserService
;
@Test
public
void
userAll
()
{
deptAndUserService
.
usersResigned
();
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论