钉钉考勤接口调用与OA系统数据对接

您所在的位置:网站首页 钉钉与用友对接怎么弄 钉钉考勤接口调用与OA系统数据对接

钉钉考勤接口调用与OA系统数据对接

2024-07-10 21:26| 来源: 网络整理| 查看: 265

钉钉考勤接口调用与OA系统数据对接

公司由原来的指纹打卡更换为钉钉打卡,需要钉钉和现有的OA考勤数据对接(合并钉钉打卡数据和OA上的请假,外出,出差数据)

1.查看钉钉接口文档 https://ding-doc.dingtalk.com/doc#/serverapi2/gh60vz 详细接口说明 2.项目搭建引入钉钉开发SDK SDK下载 3.获取钉钉考勤数据存储服务器数据库(调整存储格式) //测试 public static void main(String[] args) throws Exception { Date date = new Date(); DateFormat format_getHours = new SimpleDateFormat(“HH:mm:ss”); String currentDate = new SimpleDateFormat(“yyyy-MM-dd”).format(date); String yesterday = getPreDayOrAfterDay(currentDate, -1); String workDateFrom = yesterday + " " + “01:00:00”; String workDateTo = yesterday + " " + “23:00:00”; //新逻辑 List asList = Arrays.asList(“1”,“2”,“3”); List Attendances = new ArrayList(); for (int i = 0; i < asList.size(); i++) { Attendance Attendance = new Attendance(); Attendance.setUserId(asList.get(i)); JSONObject getuserinfo = getuserinfo(asList.get(i));//获取用户详情 String name = getuserinfo.getString(“name”);//姓名 Attendance.setName(name); JSONArray departmentid = getuserinfo.getJSONArray(“department”);//部门id Attendance.setDepartment(getdepartment(departmentid.getString(0)));//获取部门名称 Attendance.setAttendanceTime(yesterday);//设置打卡时间 JSONObject Json = getattendance(asList.get(i),workDateFrom,workDateTo);//获取打卡结果 JSONArray recordresult = Json.getJSONArray(“recordresult”); for (int j = 0; j < recordresult.size(); j++) { JSONObject record = recordresult.getJSONObject(j); String checkType = record.getString(“checkType”);//上下班 String locationResult = record.getString(“locationResult”);//位置结果 if (null!=locationResult) { switch (locationResult) { case “Normal”: locationResult=DingConstant.locationResult_Normal; break; case “Outside”: locationResult=DingConstant.locationResult_Outside; break; case “NotSigned”: locationResult=DingConstant.locationResult_NotSigned; break; } }

String timeResult = record.getString("timeResult");//打卡结果 if (null!=timeResult) { switch (timeResult) { case "Normal": timeResult=DingConstant.timeResult_Normal; break; case "Early": timeResult=DingConstant.timeResult_Early; break; case "Late": timeResult=DingConstant.timeResult_Late; case "NotSigned": timeResult=DingConstant.timeResult_NotSigned; break; } } String userCheckTime = getHours(record.getString("userCheckTime"));//打卡时间 String onDuty1checkTime = Attendance.getOnDuty1checkTime(); String onDuty1checkResult = Attendance.getOnDuty1checkResult(); String offDuty1checkResult = Attendance.getOffDuty1checkResult(); String offDuty1checkTime = Attendance.getOffDuty1checkTime(); String offDuty2checkResult = Attendance.getOffDuty2checkResult(); String offDuty2checkTime = Attendance.getOffDuty2checkTime(); String onDuty2checkResult = Attendance.getOnDuty2checkResult(); String onDuty2checkTime = Attendance.getOnDuty2checkTime(); if (checkType!=null) { if (checkType.equals("OnDuty")) { if (null==onDuty1checkTime&&null==onDuty1checkResult) { Attendance.setOnDuty1checkTime(userCheckTime); if (null!=locationResult&&locationResult.equals(DingConstant.locationResult_Outside)) { Attendance.setOnDuty1checkResult(locationResult); }else { Attendance.setOnDuty1checkResult(timeResult); } continue; }else if (null==onDuty2checkTime&&null==onDuty2checkResult) { if (format_getHours.parse(userCheckTime).getTime()0) { do { Attendance attendance3 = attendanceService.getAttendance(ding_id, nextDate); if (null!=attendance3&&attendance3.getAttendanceTime()!=null) { attendance3.setOnDuty1checkResult(leave_name); attendance3.setOnDuty2checkResult(leave_name); attendance3.setOffDuty1checkResult(leave_name); attendance3.setOffDuty2checkResult(leave_name); attendance3.setLeave_count(1f); attendanceService.updateAttendance(attendance3); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,nextDate,null,leave_name,null,leave_name,null,leave_name,null,leave_name,1f,null,null,null)); } nextDate=DateUtil.getNextDate(nextDate); } while (DateUtil.compateDate(end_date, nextDate)>0); } Attendance attendance4 = attendanceService.getAttendance(ding_id, end_date); if (null!=attendance4&&attendance4.getAttendanceTime()!=null) { attendance4.setOnDuty1checkResult(leave_name); attendance4.setOffDuty1checkResult(leave_name); attendance4.setLeave_count(0.5f); attendanceService.updateAttendance(attendance4); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,end_date,null,leave_name,null,leave_name,null,null,null,null,0.5f,null,null,null)); } if (flow_data.equals("flow_data_507")) { oaLeaveService.updateOaLeave(id,1); }else if (flow_data.equals("flow_data_508")) { oaLeaveService.updateOaLeave1(id,1); }else if (flow_data.equals("flow_data_512")) { oaLeaveService.updateOaLeave2(id,1); } continue; }else if (end_date_type.equals("下午")) { String nextDate = DateUtil.getNextDate(begin_date); Attendance attendance2 = attendanceService.getAttendance(ding_id, begin_date); if (null!=attendance2&&attendance2.getAttendanceTime()!=null) { attendance2.setOnDuty1checkResult(leave_name); attendance2.setOnDuty2checkResult(leave_name); attendance2.setOffDuty1checkResult(leave_name); attendance2.setOffDuty2checkResult(leave_name); attendance2.setLeave_count(1f); attendanceService.updateAttendance(attendance2); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,begin_date,null,leave_name,null,leave_name,null,leave_name,null,leave_name,1f,null,null,null)); } do { Attendance attendance3 = attendanceService.getAttendance(ding_id, nextDate); if (null!=attendance3&&attendance3.getAttendanceTime()!=null) { attendance3.setOnDuty1checkResult(leave_name); attendance3.setOnDuty2checkResult(leave_name); attendance3.setOffDuty1checkResult(leave_name); attendance3.setOffDuty2checkResult(leave_name); attendance3.setLeave_count(1f); attendanceService.updateAttendance(attendance3); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,nextDate,null,leave_name,null,leave_name,null,leave_name,null,leave_name,1f,null,null,null)); } nextDate=DateUtil.getNextDate(nextDate); } while (DateUtil.compateDate(end_date, nextDate)>=0); if (flow_data.equals("flow_data_507")) { oaLeaveService.updateOaLeave(id,1); }else if (flow_data.equals("flow_data_508")) { oaLeaveService.updateOaLeave1(id,1); }else if (flow_data.equals("flow_data_512")) { oaLeaveService.updateOaLeave2(id,1); } continue; } }//开始时间是上午 }else if (begin_date_type.equals("下午")) { if (count==0.5) { Attendance attendance2 = attendanceService.getAttendance(ding_id, begin_date); if (null!=attendance2) { attendance2.setOnDuty2checkResult(leave_name); attendance2.setOffDuty2checkResult(leave_name); attendance2.setLeave_count(0.5f); attendanceService.updateAttendance(attendance2); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,begin_date,null,null,null,null,null,leave_name,null,leave_name,0.5f,null,null,null)); } if (flow_data.equals("flow_data_507")) { oaLeaveService.updateOaLeave(id,1); }else if (flow_data.equals("flow_data_508")) { oaLeaveService.updateOaLeave1(id,1); }else if (flow_data.equals("flow_data_512")) { oaLeaveService.updateOaLeave2(id,1); } continue; }else if (count==1) { Attendance attendance2 = attendanceService.getAttendance(ding_id, begin_date); if (null!=attendance2&&attendance2.getAttendanceTime()!=null) { attendance2.setOnDuty2checkResult(leave_name); attendance2.setOffDuty2checkResult(leave_name); attendance2.setLeave_count(0.5f); attendanceService.updateAttendance(attendance2); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,begin_date,null,null,null,null,null,leave_name,null,leave_name,0.5f,null,null,null)); } Attendance attendance3 = attendanceService.getAttendance(ding_id, DateUtil.getNextDate(begin_date)); if (null!=attendance3&&attendance3.getAttendanceTime()!=null) { attendance3.setOnDuty1checkResult(leave_name); attendance3.setOffDuty1checkResult(leave_name); attendance3.setLeave_count(0.5f); attendanceService.updateAttendance(attendance3); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,DateUtil.getNextDate(begin_date),null,leave_name,null,leave_name,null,null,null,null,0.5f,null,null,null)); } if (flow_data.equals("flow_data_507")) { oaLeaveService.updateOaLeave(id,1); }else if (flow_data.equals("flow_data_508")) { oaLeaveService.updateOaLeave1(id,1); }else if (flow_data.equals("flow_data_512")) { oaLeaveService.updateOaLeave2(id,1); } continue; }else if (count>1) { if (end_date_type.equals("下午")) { String nextDate = DateUtil.getNextDate(begin_date); Attendance attendance2 = attendanceService.getAttendance(ding_id, begin_date); if (null!=attendance2&&attendance2.getAttendanceTime()!=null) { attendance2.setOnDuty2checkResult(leave_name); attendance2.setOffDuty2checkResult(leave_name); attendance2.setLeave_count(0.5f); attendanceService.updateAttendance(attendance2); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,begin_date,null,null,null,null,null,leave_name,null,leave_name,0.5f,null,null,null)); } do { Attendance attendance3 = attendanceService.getAttendance(ding_id, nextDate); if (null!=attendance3&&attendance3.getAttendanceTime()!=null) { attendance3.setOnDuty1checkResult(leave_name); attendance3.setOnDuty2checkResult(leave_name); attendance3.setOffDuty1checkResult(leave_name); attendance3.setOffDuty2checkResult(leave_name); attendance3.setLeave_count(1f); attendanceService.updateAttendance(attendance3); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,nextDate,null,leave_name,null,leave_name,null,leave_name,null,leave_name,1f,null,null,null)); } nextDate=DateUtil.getNextDate(nextDate); } while (DateUtil.compateDate(end_date, nextDate)>=0); if (flow_data.equals("flow_data_507")) { oaLeaveService.updateOaLeave(id,1); }else if (flow_data.equals("flow_data_508")) { oaLeaveService.updateOaLeave1(id,1); }else if (flow_data.equals("flow_data_512")) { oaLeaveService.updateOaLeave2(id,1); } continue; }else if (end_date_type.equals("上午")) { String nextDate = DateUtil.getNextDate(begin_date); Attendance attendance2 = attendanceService.getAttendance(ding_id, begin_date); if (null!=attendance2&&attendance2.getAttendanceTime()!=null) { attendance2.setOnDuty2checkResult(leave_name); attendance2.setOffDuty2checkResult(leave_name); attendance2.setLeave_count(0.5f); attendanceService.updateAttendance(attendance2); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,begin_date,null,null,null,null,null,leave_name,null,leave_name,0.5f,null,null,null)); } do { Attendance attendance3 = attendanceService.getAttendance(ding_id, nextDate); if (null!=attendance3&&attendance3.getAttendanceTime()!=null) { attendance3.setOnDuty1checkResult(leave_name); attendance3.setOnDuty2checkResult(leave_name); attendance3.setOffDuty1checkResult(leave_name); attendance3.setOffDuty2checkResult(leave_name); attendance3.setLeave_count(1f); attendanceService.updateAttendance(attendance3); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,nextDate,null,leave_name,null,leave_name,null,leave_name,null,leave_name,1f,null,null,null)); } nextDate=DateUtil.getNextDate(nextDate); } while (DateUtil.compateDate(end_date, nextDate)>0); Attendance attendance4 = attendanceService.getAttendance(ding_id, end_date); if (null!=attendance4&&attendance4.getAttendanceTime()!=null) { attendance4.setOnDuty1checkResult(leave_name); attendance4.setOffDuty1checkResult(leave_name); attendance4.setLeave_count(0.5f); attendanceService.updateAttendance(attendance4); }else { attendanceService.saveAttendance(new Attendance(ding_id,user_name,department,end_date,null,leave_name,null,leave_name,null,null,null,null,0.5f,null,null,null)); } if (flow_data.equals("flow_data_507")) { oaLeaveService.updateOaLeave(id,1); }else if (flow_data.equals("flow_data_508")) { oaLeaveService.updateOaLeave1(id,1); }else if (flow_data.equals("flow_data_512")) { oaLeaveService.updateOaLeave2(id,1); } continue; } }//开始时间是下午 } } }

5.添加定时任务 public class TimerManager { private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance();

calendar.set(Calendar.HOUR_OF_DAY, 02); calendar.set(Calendar.MINUTE, 10); calendar.set(Calendar.SECOND, 00);

Date date = calendar.getTime(); if (date.before(new Date())) { date = this.addDay(date, 1); } Timer timer = new Timer(); TimerTaskService task = new TimerTaskService(); timer.schedule(task, date, PERIOD_DAY); }

private Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } } Copyright © 2019 shaoyanbin All Rights Reserved



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3