钉钉员工入职离职回调
This commit is contained in:
parent
022bfe4fb4
commit
cb1d56c751
@ -116,6 +116,20 @@ public class DingUtils {
|
||||
}
|
||||
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 {
|
||||
|
||||
//入职
|
||||
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_INSTANCE_CHANGE = "bpms_instance_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 结果
|
||||
*/
|
||||
public AjaxResult insertSysStaff(SysStaff sysStaff);
|
||||
/**
|
||||
* 新增员工管理
|
||||
*
|
||||
* @param result 员工管理
|
||||
* @return 结果
|
||||
*/
|
||||
public void insertSysStaffByDingDing(String result);
|
||||
/**
|
||||
* 修改员工管理
|
||||
*
|
||||
@ -122,4 +129,10 @@ public interface ISysStaffService extends IService<SysStaff>
|
||||
* @return 员工管理
|
||||
*/
|
||||
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.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigDecimal;
|
||||
@ -179,6 +181,68 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
||||
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){
|
||||
//如果文件Id不为空, 则需要更新打卡设备信息, 完成后, 同步更新图片的业务Id数据
|
||||
@ -843,4 +907,12 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
|
||||
public SysStaff selectSysStaffByDingUserId(String 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