提交 f3698e35 authored 作者: 000516's avatar 000516

飞书人员离职审批完成后,取审批中离职日期,根据离职日期第二天禁用勤策账号

上级 9e537c74
......@@ -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();
}
......@@ -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();
}
}
......@@ -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();
}
......
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 IQinceEmployeeDao qinceEmployeeDao;
private IDeptAndUserService 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){
......
......@@ -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);
}
}
/**
* 同步二级以下部门
*/
......
......@@ -10,4 +10,9 @@ public interface IDeptAndUserService {
void deptAll();
void userAll();
void userResigned(String employeeNo);
void usersResigned();
}
......@@ -37,4 +37,14 @@ public class SystemTask {
deptAndUserService.userAll();
log.info("结束同步飞书用户数据");
}
/**
* 同步人员离职
*/
@XxlJob("sync_user_resigned")
public void userResigned() {
log.info("开始处理离职人员");
deptAndUserService.usersResigned();
log.info("结束处理离职人员");
}
}
......@@ -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 &lt;= current_date();
</select>
</mapper>
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
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论