From 42deacdc7dc2ccc324d2c0f94a3797008993002c Mon Sep 17 00:00:00 2001 From: yuqh <123456> Date: Tue, 24 Sep 2024 14:51:58 +0800 Subject: [PATCH] 1 --- .../src/main/resources/application-kjs.yml | 13 +++-- .../dingtalk/service/IDingTalkService.java | 10 ++-- .../service/impl/DingTalkServiceImpl.java | 51 ++++++++++++++++--- 3 files changed, 57 insertions(+), 17 deletions(-) diff --git a/buildpackage/src/main/resources/application-kjs.yml b/buildpackage/src/main/resources/application-kjs.yml index 5cb80cf9..d98d986e 100644 --- a/buildpackage/src/main/resources/application-kjs.yml +++ b/buildpackage/src/main/resources/application-kjs.yml @@ -20,12 +20,15 @@ savefile: # 文件保存路径 path: /Users/xiangerlin/work/app/logs/yuecheng cbs8: - appId: 1P4AGrpz - appSecret: 2c2369ae5dc04382844bbe3a5abf39e1bea9cd3a + appId: 1Prpz + appSecret: 24bbe3a5abf39e1bea9cd3a url: https://cbs8-openapi-reprd.csuat.cmburl.cn # 测试用这个 这个是银行给的,和下面的公钥不是一对密钥 - ya_private_key: 83BA7EC821D35F4CB31FF9A51C1EFA520FC52AF828C2337F88E91CF119B07F44 + ya_private_key: 31FF9A51C1EFA520FC52AF828C2337F88E91CF119B07F44 # 这个私钥到时候上传到cbs,和下面到是同一对 #ya_private_key: e1eacfdee9b8d4184437d5a2071e17ce31befc3d93395f9f05709ed562e8dc46 - ya_public_key: 044fa399d2223760f17b81b863cb482b009294c4516f8a605dea1475ec09e720eaa98468715e5ad509a592a0b426061551c5a3df236966c23253a7d894eac0dcde - cbs_public_key: 0469146F06BF3B01236E84632441E826F3067A6B93BC3839C836A06007869CD351FBBE388B51F742859388BBC1DE089923AAFBC69E448F15141DDF30EE6CE90185 + ya_public_key: 044fa399d2223760f17b81b864c4516f8a605dea1475ec09e720eaa98468715e5ad509a592a0b426061551c5a3df236966c23253a7d894eac0dcde + cbs_public_key: 0469146F06BF3B01236E84632441E826F30836A06007869CD351FBBE388B51F742859388BBC1DE089923AAFBC69E448F15141DDF30EE6CE90185 +dingtalk: + appKey: dingq3vbsswvyujiuwa7 + appSecret: m4IRNcKQn-W9QBLERHWt0iW2hSirvxPS684xiNw-4QFMNg2gsBCur9T4QMvvAR4I \ No newline at end of file diff --git a/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java b/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java index 8429bc1c..7d4df221 100644 --- a/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java +++ b/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java @@ -1,10 +1,7 @@ package com.hzya.frame.dingtalk.service; import com.dingtalk.api.request.OapiV2UserListRequest; -import com.dingtalk.api.response.OapiV2DepartmentGetResponse; -import com.dingtalk.api.response.OapiV2DepartmentListsubResponse; -import com.dingtalk.api.response.OapiV2UserGetResponse; -import com.dingtalk.api.response.OapiV2UserListResponse; +import com.dingtalk.api.response.*; import java.util.List; @@ -63,4 +60,9 @@ public interface IDingTalkService { * @return */ List getDeptList(Long deptId,String appKey,String appSecret); + + /** + * 获取考勤记录 + */ + List getAttendanceList(List userId,String appKey,String appSecret); } diff --git a/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java b/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java index 8e74ae9d..d1b84da4 100644 --- a/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java +++ b/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java @@ -3,21 +3,23 @@ package com.hzya.frame.dingtalk.service.impl; import com.alibaba.fastjson.JSONObject; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; -import com.dingtalk.api.request.OapiV2DepartmentGetRequest; -import com.dingtalk.api.request.OapiV2DepartmentListsubRequest; -import com.dingtalk.api.request.OapiV2UserGetRequest; -import com.dingtalk.api.request.OapiV2UserListRequest; -import com.dingtalk.api.response.OapiV2DepartmentGetResponse; -import com.dingtalk.api.response.OapiV2DepartmentListsubResponse; -import com.dingtalk.api.response.OapiV2UserGetResponse; -import com.dingtalk.api.response.OapiV2UserListResponse; +import com.dingtalk.api.request.*; +import com.dingtalk.api.response.*; import com.hzya.frame.dingtalk.service.IDingTalkService; import com.hzya.frame.dingtalk.util.DingTalkAccessToken; +import com.taobao.api.ApiException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Date; import java.util.List; /** @@ -161,4 +163,37 @@ public class DingTalkServiceImpl implements IDingTalkService { } return null; } + + @Override + public List getAttendanceList(List userId, String appKey, String appSecret) { + try { + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/attendance/listRecord"); + OapiAttendanceListRecordRequest req = new OapiAttendanceListRecordRequest(); + req.setUserIds(userId); + //获取日期设置为当前日期前7天到前一日,每周日晚上执行;既9月28日执行,获取21日至27日数据 + LocalDate currentDate = LocalDate.now(); + + // 将日期转换为 LocalDateTime(假设时间为 00:00:00) + LocalDateTime currentDateTime = currentDate.atStartOfDay(); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + req.setCheckDateTo(currentDateTime.format(formatter)); + + LocalDate eightDaysAgo = currentDate.minusDays(7); + // 将日期转换为 LocalDateTime(假设时间为 00:00:00) + LocalDateTime eightDaysAgoDateTime = eightDaysAgo.atStartOfDay(); + req.setCheckDateFrom(eightDaysAgoDateTime.format(formatter)); + + OapiAttendanceListRecordResponse rsp = client.execute(req, DingTalkAccessToken.getAccessToken(appKey, appSecret)); + if (rsp.isSuccess()) { + List result = rsp.getRecordresult(); + //System.out.println(rsp.getBody()); + return result; + } + return null; + } catch (ApiException e) { + e.printStackTrace(); + } + return null; + } }