提交 165d8969 authored 作者: douxy's avatar douxy

新增每天定时同步的飞书和勤策考勤数据的代码

上级 ce513b52
......@@ -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.FindByDepartmentUserReq;
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.SearchOffboardingReq;
import com.lark.oapi.service.corehr.v1.model.SearchOffboardingReqBody;
import com.lark.oapi.service.corehr.v1.model.SearchOffboardingResp;
import com.lark.oapi.service.corehr.v1.model.*;
import com.lark.oapi.service.corehr.v1.model.LeaveRequest;
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.exception.ServiceException;
import com.sfa.common.core.exception.auth.NotLoginException;
......@@ -33,10 +32,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.lang.Object;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author : liqiulin
......@@ -81,6 +79,8 @@ public class FeiShuUtil {
/*卤币学院*/
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 CONTENT_TYPE = "application/json; charset=utf-8";
private static final String SHEET_URL = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/";
......@@ -237,7 +237,7 @@ public class FeiShuUtil {
}
/**
* 获取部门用户
* 获取部门用户5
*/
public JSONArray getUsersByDeptId(String deptCode) {
try {
......@@ -578,4 +578,74 @@ public class FeiShuUtil {
public void setQinceWebhook(String 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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论