提交 1a542650 authored 作者: 000516's avatar 000516

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

...@@ -2,6 +2,8 @@ package com.sfa.job.domain.system.dao; ...@@ -2,6 +2,8 @@ package com.sfa.job.domain.system.dao;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import java.util.Date;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -17,4 +19,9 @@ public interface ISysUserDao { ...@@ -17,4 +19,9 @@ public interface ISysUserDao {
void deleteUser(String employeeNo); void deleteUser(String employeeNo);
Map<String, String> getUserNoAndNameMap(); 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; ...@@ -7,6 +7,7 @@ import com.sfa.job.domain.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -65,4 +66,14 @@ public class SysUserDaoImpl implements ISysUserDao{ ...@@ -65,4 +66,14 @@ public class SysUserDaoImpl implements ISysUserDao{
List<HashMap<String, String>> userNoAndNameMap = sysUserMapper.getUserNoAndNameMap(); List<HashMap<String, String>> userNoAndNameMap = sysUserMapper.getUserNoAndNameMap();
return userNoAndNameMap.stream().collect(Collectors.toMap(m -> m.get("user_name"), m -> m.get("nick_name"))); 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; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -25,6 +26,11 @@ public interface SysUserMapper extends BaseMapper<SysUser> { ...@@ -25,6 +26,11 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
void updateStatus(@Param("employeeNo") String employeeNo); void updateStatus(@Param("employeeNo") String employeeNo);
List<HashMap<String, String>> getUserNoAndNameMap(); List<HashMap<String, String>> getUserNoAndNameMap();
void updateOffboardDate(@Param("employeeNo") String employeeNo, @Param("offboardDate") Date offboardDate);
List<String> selectResignedUsers();
} }
......
package com.sfa.job.service.feishu; package com.sfa.job.service.feishu;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.lark.oapi.service.corehr.v1.model.Offboarding;
import com.lark.oapi.service.corehr.v2.model.*; import com.lark.oapi.service.corehr.v2.model.*;
import com.sfa.common.core.enums.promotion.PlanStatus; 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.common.core.utils.sdk.FeiShuUtil;
import com.sfa.job.domain.promotion.dao.IActivityPlanDao; 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.ISysDeptDao;
import com.sfa.job.domain.system.dao.ISysEventLogDao; import com.sfa.job.domain.system.dao.ISysEventLogDao;
import com.sfa.job.domain.system.dao.ISysUserDao; import com.sfa.job.domain.system.dao.ISysUserDao;
import com.sfa.job.pojo.feishu.event.EventCallBackDto; import com.sfa.job.pojo.feishu.event.EventCallBackDto;
import com.sfa.job.pojo.promotion.response.ActivityPlanApprovalDto; import com.sfa.job.pojo.promotion.response.ActivityPlanApprovalDto;
import com.sfa.job.pojo.response.SysEventLogDto; 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 com.sfa.job.util.T100Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map; import java.util.Date;
import java.util.Objects; import java.util.Objects;
/** /**
...@@ -39,13 +40,11 @@ public class EventCallbackServiceImpl implements IEventCallbackService{ ...@@ -39,13 +40,11 @@ public class EventCallbackServiceImpl implements IEventCallbackService{
@Autowired @Autowired
private ISysEventLogDao sysEventLogDao; private ISysEventLogDao sysEventLogDao;
@Autowired @Autowired
private IQinceEmployeeDao qinceEmployeeDao; private IDeptAndUserService deptAndUserService;
@Autowired @Autowired
private FeiShuUtil feiShuUtil; private FeiShuUtil feiShuUtil;
@Autowired @Autowired
private T100Util t100Util; private T100Util t100Util;
@Autowired
private QinCeUtils qinCeUtils;
@Override @Override
public void planCP(EventCallBackDto.Event event) { public void planCP(EventCallBackDto.Event event) {
...@@ -194,27 +193,25 @@ public class EventCallbackServiceImpl implements IEventCallbackService{ ...@@ -194,27 +193,25 @@ public class EventCallbackServiceImpl implements IEventCallbackService{
*/ */
@Override @Override
public void userResigned(String employmentId) { 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); Employee emp = feiShuUtil.getEmployeeReq(employmentId);
String employeeNo = emp.getEmployeeNumber(); String employeeNo = emp.getEmployeeNumber();
if (StringUtils.isEmpty(employeeNo)){ if (StringUtils.isEmpty(employeeNo)){
return; return;
} }
// 链路中心人员离职 - 根据工号 sysUserDao.updateOffboardDate(employeeNo,offboardDate);
sysUserDao.deleteUser(employeeNo); // 判定offboardDate 是否是以前
if (!offboardDate.before(new Date())){
// 勤策人员离职 - 根据工号+勤策ID return;
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());
} }
deptAndUserService.userResigned(employeeNo);
} }
private void userAUT100(Employee emp){ private void userAUT100(Employee emp){
......
...@@ -3,14 +3,19 @@ package com.sfa.job.service.system; ...@@ -3,14 +3,19 @@ package com.sfa.job.service.system;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.sfa.common.core.utils.sdk.FeiShuUtil; 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.ISysDeptDao;
import com.sfa.job.domain.system.dao.ISysUserDao; import com.sfa.job.domain.system.dao.ISysUserDao;
import com.sfa.job.domain.system.entity.SysDept; import com.sfa.job.domain.system.entity.SysDept;
import com.sfa.job.util.QinCeUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author : liqiulin * @author : liqiulin
...@@ -27,7 +32,10 @@ public class DeptAndUserServiceImpl implements IDeptAndUserService { ...@@ -27,7 +32,10 @@ public class DeptAndUserServiceImpl implements IDeptAndUserService {
private ISysDeptDao sysDeptDao; private ISysDeptDao sysDeptDao;
@Autowired @Autowired
private ISysUserDao sysUserDao; private ISysUserDao sysUserDao;
@Autowired
private IQinceEmployeeDao qinceEmployeeDao;
@Autowired
private QinCeUtils qinCeUtils;
/** /**
* 从飞书同步全量部门信息 * 从飞书同步全量部门信息
*/ */
...@@ -66,6 +74,40 @@ public class DeptAndUserServiceImpl implements IDeptAndUserService { ...@@ -66,6 +74,40 @@ public class DeptAndUserServiceImpl implements IDeptAndUserService {
sysUserDao.updateDeptLeader(); 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 { ...@@ -10,4 +10,9 @@ public interface IDeptAndUserService {
void deptAll(); void deptAll();
void userAll(); void userAll();
void userResigned(String employeeNo);
void usersResigned();
} }
...@@ -37,4 +37,14 @@ public class SystemTask { ...@@ -37,4 +37,14 @@ public class SystemTask {
deptAndUserService.userAll(); deptAndUserService.userAll();
log.info("结束同步飞书用户数据"); log.info("结束同步飞书用户数据");
} }
/**
* 同步人员离职
*/
@XxlJob("sync_user_resigned")
public void userResigned() {
log.info("开始处理离职人员");
deptAndUserService.usersResigned();
log.info("结束处理离职人员");
}
} }
...@@ -102,4 +102,12 @@ ...@@ -102,4 +102,12 @@
from sys_user where del_flag = 0 from sys_user where del_flag = 0
</select> </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> </mapper>
package com.sfa.job.service.feishu; package com.sfa.job.service.feishu;
import com.sfa.common.core.utils.DateUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import java.util.Date;
import static org.junit.Assert.*; import static org.junit.Assert.*;
/** /**
...@@ -21,6 +24,12 @@ public class EventCallbackServiceImplTest { ...@@ -21,6 +24,12 @@ public class EventCallbackServiceImplTest {
@Test @Test
public void userResigned() { 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; package com.sfa.job.service.system;
import org.junit.Test; 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.*; import static org.junit.Assert.*;
...@@ -9,9 +13,14 @@ import static org.junit.Assert.*; ...@@ -9,9 +13,14 @@ import static org.junit.Assert.*;
* @date : 2024-12-10 15 * @date : 2024-12-10 15
* @describe : * @describe :
*/ */
@RunWith(SpringRunner.class)
@SpringBootTest
public class DeptAndUserServiceImplTest { public class DeptAndUserServiceImplTest {
@Autowired
private IDeptAndUserService deptAndUserService;
@Test @Test
public void userAll() { public void userAll() {
deptAndUserService.usersResigned();
} }
} }
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论