钉钉员工入职离职回调
This commit is contained in:
parent
022bfe4fb4
commit
cb1d56c751
@ -116,6 +116,20 @@ public class DingUtils {
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//根据手机号获取用户id
|
||||||
|
public static String getUserInfoByUserId(String userId){
|
||||||
|
try {
|
||||||
|
DingTalkClient client = new DefaultDingTalkClient(DingGlobalParams.getUrl()+"v2/user/get");
|
||||||
|
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
|
||||||
|
req.setUserid(userId);
|
||||||
|
OapiV2UserGetResponse rsp = client.execute(req, "");
|
||||||
|
return rsp.getBody();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
/***
|
/***
|
||||||
* 获取班次信息
|
* 获取班次信息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -12,9 +12,14 @@ import com.alibaba.fastjson2.JSONObject;
|
|||||||
*/
|
*/
|
||||||
public interface DingCallBackExchangeProcessor {
|
public interface DingCallBackExchangeProcessor {
|
||||||
|
|
||||||
|
//入职
|
||||||
|
static final String EVENT_TYPE_USER_ADD_ORG = "user_add_org";
|
||||||
|
//离职
|
||||||
|
static final String EVENT_TYPE_USER_LEAVE_ORG = "user_leave_org";
|
||||||
|
|
||||||
//打卡
|
//打卡
|
||||||
static final String EVENT_TYPE_CHECK_RECORD = "attendance_check_record";
|
static final String EVENT_TYPE_CHECK_RECORD = "attendance_check_record";
|
||||||
//审批实例订阅
|
//审批实例订阅-> 补卡
|
||||||
static final String EVENT_TYPE_INSTANCE_CHANGE = "bpms_instance_change";
|
static final String EVENT_TYPE_INSTANCE_CHANGE = "bpms_instance_change";
|
||||||
//请假、加班、出差、外出状态变更事件
|
//请假、加班、出差、外出状态变更事件
|
||||||
static final String EVENT_TYPE_APPROVE_STATUS_CHANGE = "attendance_approve_status_change";
|
static final String EVENT_TYPE_APPROVE_STATUS_CHANGE = "attendance_approve_status_change";
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
package com.evo.ding.processor.callback.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.evo.ding.processor.callback.DingCallBackExchangeProcessor;
|
||||||
|
import com.evo.system.service.ISysStaffService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工离职 DingCallBackUseLeaveOrgExchangeProcessor
|
||||||
|
*
|
||||||
|
* @author andy.shi
|
||||||
|
* @ClassName:DingCallBackUseLeaveOrgExchangeProcessor
|
||||||
|
* @date: 2026年03月12日 9:02
|
||||||
|
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class DingCallBackUseLeaveOrgExchangeProcessor implements DingCallBackExchangeProcessor {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ISysStaffService sysStaffService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean accept(String eventType) {
|
||||||
|
return EVENT_TYPE_USER_LEAVE_ORG.equals(eventType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exchange(JSONObject json) {
|
||||||
|
log.info("钉钉 员工离职========================>>>{}", json.toString());
|
||||||
|
JSONArray dataList = json.getJSONArray("userId");
|
||||||
|
if(dataList!= null && dataList.size() > 0){
|
||||||
|
dataList.forEach(data->{
|
||||||
|
sysStaffService.sysStaffLeaveByDingUserId(String.valueOf(data));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package com.evo.ding.processor.callback.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.evo.attendance.service.IRzAttendanceService;
|
||||||
|
import com.evo.common.utils.StringUtils;
|
||||||
|
import com.evo.ding.DingUtils;
|
||||||
|
import com.evo.ding.processor.callback.DingCallBackExchangeProcessor;
|
||||||
|
import com.evo.system.service.ISysStaffService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工入职 DingCallBackUserAddOrgExchangeProcessor
|
||||||
|
*
|
||||||
|
* @author andy.shi
|
||||||
|
* @ClassName:DingCallBackUserAddOrgExchangeProcessor
|
||||||
|
* @date: 2026年03月12日 9:02
|
||||||
|
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class DingCallBackUserAddOrgExchangeProcessor implements DingCallBackExchangeProcessor {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
ISysStaffService sysStaffService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean accept(String eventType) {
|
||||||
|
return EVENT_TYPE_USER_ADD_ORG.equals(eventType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exchange(JSONObject json) {
|
||||||
|
log.info("钉钉 新增员工========================>>>{}", json.toString());
|
||||||
|
JSONArray dataList = json.getJSONArray("userId");
|
||||||
|
if(dataList!= null && dataList.size() > 0){
|
||||||
|
dataList.forEach(data->{
|
||||||
|
DingUtils.getUserInfoByUserId(String.valueOf(data));
|
||||||
|
sysStaffService.sysStaffLeaveByDingUserId(String.valueOf(data));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -39,6 +39,13 @@ public interface ISysStaffService extends IService<SysStaff>
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public AjaxResult insertSysStaff(SysStaff sysStaff);
|
public AjaxResult insertSysStaff(SysStaff sysStaff);
|
||||||
|
/**
|
||||||
|
* 新增员工管理
|
||||||
|
*
|
||||||
|
* @param result 员工管理
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public void insertSysStaffByDingDing(String result);
|
||||||
/**
|
/**
|
||||||
* 修改员工管理
|
* 修改员工管理
|
||||||
*
|
*
|
||||||
@ -122,4 +129,10 @@ public interface ISysStaffService extends IService<SysStaff>
|
|||||||
* @return 员工管理
|
* @return 员工管理
|
||||||
*/
|
*/
|
||||||
public SysStaff selectSysStaffByDingUserId(String dingUserId);
|
public SysStaff selectSysStaffByDingUserId(String dingUserId);
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 根据钉钉的用户id做用户离职
|
||||||
|
* @param dingUserId
|
||||||
|
*/
|
||||||
|
public void sysStaffLeaveByDingUserId(String dingUserId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,6 +47,8 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@ -179,6 +181,68 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
|||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertSysStaffByDingDing(String result) {
|
||||||
|
|
||||||
|
JSONObject dingResult = JSONObject.parseObject(result);
|
||||||
|
dingResult.getJSONObject("result");
|
||||||
|
|
||||||
|
// //根据省份证号查询是否已经录入
|
||||||
|
// SysStaff p_staff = getBaseMapper().queryysStaffByIdCard(sysStaff.getIdCard());
|
||||||
|
// if(StringUtils.isNotNull(p_staff)){
|
||||||
|
// return AjaxResult.error("此人录入过!!");
|
||||||
|
// }
|
||||||
|
// //判断是否是领导,是反写部门信息
|
||||||
|
// if("是".equals(sysStaff.getIsLeader())){
|
||||||
|
// //根据ID查询部门信息
|
||||||
|
// SysDept sysDept = deptMapper.selectDeptById(sysStaff.getDeptId());
|
||||||
|
// sysDept.setPhone(sysStaff.getPhone());
|
||||||
|
// sysDept.setLeader(sysStaff.getName());
|
||||||
|
// int i = deptMapper.updateDept(sysDept);
|
||||||
|
// if(i < 1){
|
||||||
|
// return AjaxResult.error("更新部门负责人失败");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //根据省份证确定性别和年龄
|
||||||
|
// sysStaff.setAge(Long.parseLong(new SimpleDateFormat("yyyy").format(new Date())) - Long.parseLong(sysStaff.getIdCard().substring(6,10)));
|
||||||
|
// //性别
|
||||||
|
// sysStaff.setSex((Integer.parseInt(sysStaff.getIdCard().substring(16,17)) % 2 == 0) ? "1" : "0");
|
||||||
|
// //员工编码
|
||||||
|
// sysStaff.setCode(getCodeByCompanyName());
|
||||||
|
// sysStaff.setSeniority(0l);
|
||||||
|
// sysStaff.setStatus(Constants.JOB_STATIS_0);
|
||||||
|
// sysStaff.setCreateTime(DateUtils.getNowDate());
|
||||||
|
// sysStaff.setCreateBy(SecurityUtils.getUsername());
|
||||||
|
// sysStaff.setDelFlag(Constants.DELETE_FLAG_0);
|
||||||
|
//
|
||||||
|
// if(CollectionUtils.isNotEmpty(sysStaff.getSubsidyList())){
|
||||||
|
// sysStaff.setSubsidys(sysStaff.getSubsidyList().stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||||
|
// }
|
||||||
|
// //打卡位置改为多选
|
||||||
|
// if(CollectionUtils.isNotEmpty(sysStaff.getTimeClockList())){
|
||||||
|
// sysStaff.setTimeClock(sysStaff.getTimeClockList().stream().collect(Collectors.joining(",")));
|
||||||
|
// }
|
||||||
|
// //新增员工信息到金蝶
|
||||||
|
// if(StringUtils.isNotEmpty(sysStaff.getJobCode())){
|
||||||
|
// sysStaff.setExtended(KingdeeRequestUtils.employeeSave(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode(), "jobCode", sysStaff.getJobCode().split("_")[0],"deptCode", sysStaff.getJobCode().split("_")[1])));
|
||||||
|
// }else if(StringUtils.isEmpty(sysStaff.getJobCode())){
|
||||||
|
// sysStaff.setExtended(KingdeeRequestUtils.employeeSaveEmptyJob(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode())));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// int i = getBaseMapper().insertSysStaff(sysStaff);
|
||||||
|
// if(i < 1){
|
||||||
|
// return AjaxResult.error("员工添加失败");
|
||||||
|
// }
|
||||||
|
// //员工详情
|
||||||
|
// createStaffDetail(sysStaff);
|
||||||
|
// //打卡统计,打卡详情
|
||||||
|
// rzAttendanceStatisticalService.createRzAttendance(sysStaff, Collections.emptyList(), null);
|
||||||
|
// //处理餐饮信息
|
||||||
|
// rzRestaurantStatisticsService.createRestaurantStatistics(sysStaff, DateUtils.getNowDate());
|
||||||
|
// //处理考勤机相关信息
|
||||||
|
// initCheckDevice(sysStaff);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void initCheckDevice(SysStaff sysStaff){
|
private void initCheckDevice(SysStaff sysStaff){
|
||||||
//如果文件Id不为空, 则需要更新打卡设备信息, 完成后, 同步更新图片的业务Id数据
|
//如果文件Id不为空, 则需要更新打卡设备信息, 完成后, 同步更新图片的业务Id数据
|
||||||
@ -843,4 +907,12 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
|||||||
public SysStaff selectSysStaffByDingUserId(String dingUserId) {
|
public SysStaff selectSysStaffByDingUserId(String dingUserId) {
|
||||||
return getBaseMapper().selectSysStaffByDingUserId(dingUserId);
|
return getBaseMapper().selectSysStaffByDingUserId(dingUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sysStaffLeaveByDingUserId(String dingUserId) {
|
||||||
|
SysStaff sysStaff = selectSysStaffByDingUserId(dingUserId);
|
||||||
|
//减去一分钟, 防止离职失败
|
||||||
|
sysStaff.setQuitDate(DateUtils.addMinutes(new Date(), -1));
|
||||||
|
updateSysStaff(sysStaff);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user