Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-common-core
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-common-core
Commits
165d8969
提交
165d8969
authored
2月 03, 2026
作者:
douxy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增每天定时同步的飞书和勤策考勤数据的代码
上级
ce513b52
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
78 行增加
和
8 行删除
+78
-8
FeiShuUtil.java
src/main/java/com/sfa/common/core/utils/sdk/FeiShuUtil.java
+78
-8
没有找到文件。
src/main/java/com/sfa/common/core/utils/sdk/FeiShuUtil.java
浏览文件 @
165d8969
...
@@ -19,11 +19,10 @@ import com.lark.oapi.service.contact.v3.model.ChildrenDepartmentReq;
...
@@ -19,11 +19,10 @@ import com.lark.oapi.service.contact.v3.model.ChildrenDepartmentReq;
import
com.lark.oapi.service.contact.v3.model.ChildrenDepartmentResp
;
import
com.lark.oapi.service.contact.v3.model.ChildrenDepartmentResp
;
import
com.lark.oapi.service.contact.v3.model.FindByDepartmentUserReq
;
import
com.lark.oapi.service.contact.v3.model.FindByDepartmentUserReq
;
import
com.lark.oapi.service.contact.v3.model.FindByDepartmentUserResp
;
import
com.lark.oapi.service.contact.v3.model.FindByDepartmentUserResp
;
import
com.lark.oapi.service.corehr.v1.model.Offboarding
;
import
com.lark.oapi.service.corehr.v1.model.*
;
import
com.lark.oapi.service.corehr.v1.model.SearchOffboardingReq
;
import
com.lark.oapi.service.corehr.v1.model.LeaveRequest
;
import
com.lark.oapi.service.corehr.v1.model.SearchOffboardingReqBody
;
import
com.lark.oapi.service.corehr.v1.model.SearchOffboardingResp
;
import
com.lark.oapi.service.corehr.v2.model.*
;
import
com.lark.oapi.service.corehr.v2.model.*
;
import
com.lark.oapi.service.corehr.v2.model.Department
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.enums.ECode
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.exception.auth.NotLoginException
;
import
com.sfa.common.core.exception.auth.NotLoginException
;
...
@@ -33,10 +32,9 @@ import org.slf4j.LoggerFactory;
...
@@ -33,10 +32,9 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.lang.Object
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* @author : liqiulin
* @author : liqiulin
...
@@ -81,6 +79,8 @@ public class FeiShuUtil {
...
@@ -81,6 +79,8 @@ public class FeiShuUtil {
/*卤币学院*/
/*卤币学院*/
public
static
final
String
APP_LBXY
=
"lbxy"
;
public
static
final
String
APP_LBXY
=
"lbxy"
;
private
static
final
String
[]
LEAVE_STATUS
=
new
String
[]
{
"1"
,
"9"
};
private
static
final
String
UTF_8
=
"UTF-8"
;
private
static
final
String
UTF_8
=
"UTF-8"
;
private
static
final
String
CONTENT_TYPE
=
"application/json; charset=utf-8"
;
private
static
final
String
CONTENT_TYPE
=
"application/json; charset=utf-8"
;
private
static
final
String
SHEET_URL
=
"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/"
;
private
static
final
String
SHEET_URL
=
"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/"
;
...
@@ -237,7 +237,7 @@ public class FeiShuUtil {
...
@@ -237,7 +237,7 @@ public class FeiShuUtil {
}
}
/**
/**
* 获取部门用户
* 获取部门用户
5
*/
*/
public
JSONArray
getUsersByDeptId
(
String
deptCode
)
{
public
JSONArray
getUsersByDeptId
(
String
deptCode
)
{
try
{
try
{
...
@@ -578,4 +578,74 @@ public class FeiShuUtil {
...
@@ -578,4 +578,74 @@ public class FeiShuUtil {
public
void
setQinceWebhook
(
String
qinceWebhook
)
{
public
void
setQinceWebhook
(
String
qinceWebhook
)
{
FeiShuUtil
.
qinceWebhook
=
qinceWebhook
;
FeiShuUtil
.
qinceWebhook
=
qinceWebhook
;
}
}
/**
* 根据 employmentId 查询员工编号(employee_no)
* @param employmentId 员工雇佣ID
* @return 员工编号,查询失败返回空字符串
*/
public
String
getEmployeeNoByEmploymentId
(
String
employmentId
)
{
// 空值校验
if
(
StringUtils
.
isBlank
(
employmentId
))
{
log
.
warn
(
"employment_id 为空,无法查询员工编号"
);
return
""
;
}
try
{
Employee
employee
=
getEmployeeReq
(
employmentId
);
// 提取 employee_no(对应 Employee 中的 employeeNumber 字段)
if
(
employee
!=
null
&&
StringUtils
.
isNotBlank
(
employee
.
getEmployeeNumber
()))
{
return
StringUtils
.
trimToEmpty
(
employee
.
getEmployeeNumber
());
}
else
{
log
.
warn
(
"根据 employment_id:{} 未查询到有效员工编号"
,
employmentId
);
return
""
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"根据 employment_id:{} 查询员工编号异常"
,
employmentId
,
e
);
return
""
;
}
}
/**
* 查询指定日期的所有飞书请假记录(自动分页,获取全部数据)
* @param date 格式:yyyy-MM-dd
* @return 封装了所有请假记录的JSON字符串(包含leave_request_list和total字段)
*/
public
String
getAllLeaveRecords
(
String
date
)
{
List
<
LeaveRequest
>
allRecords
=
new
ArrayList
<>();
String
pageToken
=
""
;
do
{
try
{
Client
client
=
getClientLUZX
();
LeaveRequestHistoryLeaveReq
req
=
LeaveRequestHistoryLeaveReq
.
newBuilder
()
.
pageSize
(
"100"
)
.
pageToken
(
pageToken
)
.
leaveRequestStatus
(
LEAVE_STATUS
)
.
leaveUpdateTimeMin
(
date
+
" 00:00:00"
)
.
leaveUpdateTimeMax
(
date
+
" 23:59:59"
)
.
build
();
LeaveRequestHistoryLeaveResp
resp
=
client
.
corehr
().
v1
().
leave
().
leaveRequestHistory
(
req
);
if
(!
resp
.
success
())
{
log
.
error
(
"分页获取请假记录失败:code={}, msg={}"
,
resp
.
getCode
(),
resp
.
getMsg
());
break
;
}
LeaveRequestHistoryLeaveRespBody
data
=
resp
.
getData
();
if
(
data
!=
null
&&
data
.
getLeaveRequestList
()
!=
null
&&
data
.
getLeaveRequestList
().
length
>
0
)
{
allRecords
.
addAll
(
Arrays
.
asList
(
data
.
getLeaveRequestList
()));
}
pageToken
=
data
.
getPageToken
();
}
catch
(
Exception
e
)
{
log
.
error
(
"分页获取请假记录异常"
,
e
);
break
;
}
}
while
(
StringUtils
.
isNotBlank
(
pageToken
));
JSONObject
result
=
new
JSONObject
();
// 直接存入扁平列表
result
.
put
(
"leave_request_list"
,
allRecords
);
// 总数为实际记录数
result
.
put
(
"total"
,
allRecords
.
size
());
return
result
.
toJSONString
();
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论