Quellcode durchsuchen

增加待办任务测试

koul vor 10 Monaten
Ursprung
Commit
0440487f12

+ 1 - 0
dingtalk-sdk/build.gradle

@@ -2,5 +2,6 @@ dependencies {
     compile "org.springframework:spring-context"
     compile "$fastjson"
     compile "com.dingtalk:dingtalk-sdk:1.0"
+    compile "com.aliyun:dingtalk:1.1.96"
     testCompile "junit:junit"
 }

+ 0 - 2
dingtalk-sdk/src/main/java/com/usoftchina/dingtalk/sdk/BaseSdk.java

@@ -1,8 +1,6 @@
 package com.usoftchina.dingtalk.sdk;
 
-import com.alibaba.fastjson.JSON;
 import com.dingtalk.api.DefaultDingTalkClient;
-import com.dingtalk.api.DingTalkClient;
 import com.dingtalk.api.request.OapiGettokenRequest;
 import com.dingtalk.api.response.OapiGettokenResponse;
 import com.taobao.api.ApiException;

+ 97 - 1
dingtalk-sdk/src/main/java/com/usoftchina/dingtalk/sdk/OaSdk.java

@@ -1,5 +1,8 @@
 package com.usoftchina.dingtalk.sdk;
 
+import com.aliyun.dingtalktodo_1_0.models.*;
+import com.aliyun.teaopenapi.models.Config;
+import com.aliyun.teautil.models.RuntimeOptions;
 import com.dingtalk.api.DefaultDingTalkClient;
 import com.dingtalk.api.DingTalkClient;
 import com.dingtalk.api.request.*;
@@ -340,7 +343,7 @@ public class OaSdk extends BaseSdk {
         return null;
     }
 
-    public List<OapiAttendanceGetleavestatusResponse.LeaveStatusVO> getAllLeaves(String agentCode,List<String> userIdList, long startTime, long endTime){
+    public List<OapiAttendanceGetleavestatusResponse.LeaveStatusVO> getAllLeaves(String agentCode, List<String> userIdList, long startTime, long endTime){
         List<OapiAttendanceGetleavestatusResponse.LeaveStatusVO> dataList = new ArrayList<>();
         long i=1,size=20;
         while (true) {
@@ -356,4 +359,97 @@ public class OaSdk extends BaseSdk {
         }
         return dataList;
     }
+
+    /**
+     * 使用 Token 初始化账号Client
+     * @return Client
+     * @throws Exception
+     */
+    public com.aliyun.dingtalktodo_1_0.Client initClient() throws Exception {
+        Config config = new Config();
+        config.protocol = "https";
+        config.regionId = "central";
+        return new com.aliyun.dingtalktodo_1_0.Client(config);
+    }
+    public void createTodo(String agentCode,String unionId,String creatorId,String appUrl,String pcUrl,String title,String description,int priority,String dingNotify,Boolean isOnlyShow) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client  = initClient();
+        CreateTodoTaskHeaders createTodoTaskHeaders = new CreateTodoTaskHeaders();
+        createTodoTaskHeaders.xAcsDingtalkAccessToken = getAccessToken(agentCode);
+        CreateTodoTaskRequest.CreateTodoTaskRequestNotifyConfigs notifyConfigs = new CreateTodoTaskRequest.CreateTodoTaskRequestNotifyConfigs()
+                .setDingNotify(dingNotify);
+        CreateTodoTaskRequest.CreateTodoTaskRequestDetailUrl detailUrl = new CreateTodoTaskRequest.CreateTodoTaskRequestDetailUrl()
+                .setAppUrl(appUrl)
+                .setPcUrl(pcUrl);
+        CreateTodoTaskRequest createTodoTaskRequest = new CreateTodoTaskRequest()
+                .setSubject(title)
+                .setCreatorId(creatorId)
+                .setDescription(description)
+                .setDueTime(DateUtils.nowDateEnd().getTime())
+                .setExecutorIds(java.util.Arrays.asList(
+                        unionId
+                ))
+                .setParticipantIds(java.util.Arrays.asList(
+                        unionId
+                ))
+                .setDetailUrl(detailUrl)
+                .setIsOnlyShowExecutor(isOnlyShow)
+                .setPriority(priority)
+                .setNotifyConfigs(notifyConfigs);
+        client.createTodoTaskWithOptions(unionId, createTodoTaskRequest, createTodoTaskHeaders, new RuntimeOptions());
+    }
+
+    public void updateTodo(String agentCode,String creatorId,String unionId,String taskId,String title,String description) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client = initClient();
+        UpdateTodoTaskHeaders updateTodoTaskHeaders = new UpdateTodoTaskHeaders();
+        updateTodoTaskHeaders.xAcsDingtalkAccessToken =getAccessToken(agentCode);
+        UpdateTodoTaskRequest updateTodoTaskRequest = new UpdateTodoTaskRequest()
+                .setOperatorId(creatorId)
+                .setSubject(title)
+                .setDescription(description)
+                .setDueTime(DateUtils.nowDateTime().getTime())
+                .setDone(true)
+                .setExecutorIds(java.util.Arrays.asList(
+                        unionId
+                ))
+                .setParticipantIds(java.util.Arrays.asList(
+                        unionId
+                ));
+        client.updateTodoTaskWithOptions(unionId, taskId, updateTodoTaskRequest, updateTodoTaskHeaders, new RuntimeOptions());
+    }
+
+    public QueryOrgTodoTasksResponse getTodo(String agentCode,String unionId,String nextToken,Boolean isDone) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client = initClient();
+        QueryOrgTodoTasksHeaders queryOrgTodoTasksHeaders = new QueryOrgTodoTasksHeaders();
+        queryOrgTodoTasksHeaders.xAcsDingtalkAccessToken = getAccessToken(agentCode);
+        QueryOrgTodoTasksRequest queryOrgTodoTasksRequest = new QueryOrgTodoTasksRequest()
+                .setNextToken(nextToken)
+                .setIsDone(isDone);
+        return client.queryOrgTodoTasksWithOptions(unionId, queryOrgTodoTasksRequest, queryOrgTodoTasksHeaders, new RuntimeOptions());
+    }
+
+    public List<QueryOrgTodoTasksResponseBody.QueryOrgTodoTasksResponseBodyTodoCards> getAllTodo(String agentCode,String unionId,String nextToken,Boolean isDone) throws Exception {
+        Boolean b=true;
+        List<QueryOrgTodoTasksResponseBody.QueryOrgTodoTasksResponseBodyTodoCards> todos = new ArrayList<>();
+        while (b){
+            QueryOrgTodoTasksResponse todo = getTodo(agentCode, unionId, nextToken, isDone);
+            QueryOrgTodoTasksResponseBody body = todo.getBody();
+            todos.addAll(body.getTodoCards());
+            String token = body.getNextToken();
+            if (token!=null&&!"".equals(token)){
+                nextToken=token;
+            }else {
+                b=false;
+            }
+        }
+        return todos;
+    }
+
+    public void deleteTodo(String agentCode,String unionId,String taskId) throws Exception {
+        com.aliyun.dingtalktodo_1_0.Client client = initClient();
+        DeleteTodoTaskHeaders deleteTodoTaskHeaders = new DeleteTodoTaskHeaders();
+        deleteTodoTaskHeaders.xAcsDingtalkAccessToken = getAccessToken(agentCode);
+        DeleteTodoTaskRequest deleteTodoTaskRequest = new DeleteTodoTaskRequest()
+                .setOperatorId(unionId);
+        client.deleteTodoTaskWithOptions(unionId, taskId, deleteTodoTaskRequest, deleteTodoTaskHeaders, new RuntimeOptions());
+    }
 }

+ 55 - 4
dingtalk-sdk/src/test/java/com/usoftchina/dingtalk/sdk/test/OaSdkTest.java

@@ -1,9 +1,11 @@
 package com.usoftchina.dingtalk.sdk.test;
 
+import com.aliyun.dingtalktodo_1_0.models.*;
 import com.dingtalk.api.response.OapiAlitripBtripApplySearchResponse;
 import com.dingtalk.api.response.OapiAttendanceGetleavestatusResponse;
 import com.dingtalk.api.response.OapiSmartworkHrmEmployeeListdimissionResponse;
 import com.usoftchina.dingtalk.sdk.OaSdk;
+import com.usoftchina.dingtalk.sdk.util.UrlUtils;
 import org.junit.Test;
 import org.springframework.util.CollectionUtils;
 
@@ -25,7 +27,7 @@ public class OaSdkTest extends BaseTest {
 
     @Test
     public void getAlitripList() {
-        List<OapiAlitripBtripApplySearchResponse.OpenApplyRs> alitripList = sdk.getAlitripList("Uas", "2024-04-23 00:00:00", "2024-04-26 18:00:00", 1, 10);
+        List<OapiAlitripBtripApplySearchResponse.OpenApplyRs> alitripList = sdk.getAlitripList("Uas", "2024-03-01 00:00:00", "2024-05-14 18:00:00", 1, 50);
         if (!CollectionUtils.isEmpty(alitripList)) {
             for (OapiAlitripBtripApplySearchResponse.OpenApplyRs openApplyRs:alitripList) {
                 System.out.println(openApplyRs);
@@ -35,9 +37,11 @@ public class OaSdkTest extends BaseTest {
 
     @Test
     public void getEmpLeaveRecords() {
-        List<OapiSmartworkHrmEmployeeListdimissionResponse.EmpDimissionInfoVo> empLeave = sdk.getAllEmpLeaveRecords("Uas");
-        if (!CollectionUtils.isEmpty(empLeave)) {
-            System.err.println(empLeave);
+        List<OapiSmartworkHrmEmployeeListdimissionResponse.EmpDimissionInfoVo> empLeaves = sdk.getAllEmpLeaveRecords("Uas");
+        if (!CollectionUtils.isEmpty(empLeaves)) {
+            for (OapiSmartworkHrmEmployeeListdimissionResponse.EmpDimissionInfoVo empLeave:empLeaves) {
+                System.err.println(empLeave.getStatus());
+            }
         }
     }
 
@@ -50,4 +54,51 @@ public class OaSdkTest extends BaseTest {
             System.err.println(leaveStatusVOS);
         }
     }
+
+    @Test
+    public void test(){
+        int i=1,j=100;
+        double i1 = (double)i/j;
+        System.err.println(i1);
+        System.err.println((int)Math.ceil(i1));
+        System.err.println((int) Math.ceil((double)i / j));
+    }
+
+    @Test
+    public void createTodo() throws Exception {
+        String appUrl = UrlUtils.generateAuthUrl(properties.getCorpId(),"MOYING", "UasAudit","http://113.106.72.245:8099/ERP/",
+                 "http://113.106.72.245:8099/office/authorize", "uas/uasApproval/MOYING");
+        System.err.println(appUrl);
+        //String appUrl="http://113.106.72.245:8099/office/authorize?corpId=dingcc2251af7d9b14e735c2f4657eb6378f&agent=UasAudit&url=aHR0cDovLzExMy4xMDYuNzIuMjQ1OjgwOTkvRVJQL3Vhcy91YXNBcHByb3ZhbC9NT1lJTkcv&master=MOYING";
+        String pcUrl="http://113.106.72.245:8099/office/authorize?corpId=dingcc2251af7d9b14e735c2f4657eb6378f&agent=UasAudit&url=aHR0cDovLzExMy4xMDYuNzIuMjQ1OjgwOTkvRVJQL3Vhcy91YXNBcHByb3ZhbC9NT1lJTkcv&master=MOYING";
+        sdk.createTodo("Uas","lFkVS5u2qgtZo41sRuiiTTAiEiE","WQl6DqxOyZ4brwoQaiSyiSuwiEiE",appUrl,pcUrl,"未处理流程","有未处理的流程需要处理",40,"1",false);
+
+    }
+
+    @Test
+    public void updatetodo() throws Exception {
+        sdk.updateTodo("UasAudit","WQl6DqxOyZ4brwoQaiSyiSuwiEiE","lFkVS5u2qgtZo41sRuiiTTAiEiE","taskId","未处理流程","有未处理的流程需要处理");
+    }
+
+    @Test
+    public void deleteTodo() throws Exception {
+        QueryOrgTodoTasksResponse todo = sdk.getTodo("Uas", "lFkVS5u2qgtZo41sRuiiTTAiEiE", "0", false);
+        String nextToken = todo.getBody().nextToken;
+        System.err.println(nextToken);
+        List<QueryOrgTodoTasksResponseBody.QueryOrgTodoTasksResponseBodyTodoCards> todoCards = todo.getBody().getTodoCards();
+        for (QueryOrgTodoTasksResponseBody.QueryOrgTodoTasksResponseBodyTodoCards todoCard:todoCards) {
+            System.err.println(todoCard.taskId);
+            //if ("未处理流程".equals(todoCard.subject)){
+                sdk.deleteTodo("Uas","lFkVS5u2qgtZo41sRuiiTTAiEiE",todoCard.taskId);
+            //}
+        }
+    }
+
+    @Test
+    public void getAllTodo() throws Exception {
+        List<QueryOrgTodoTasksResponseBody.QueryOrgTodoTasksResponseBodyTodoCards> allTodo = sdk.getAllTodo("Uas", "lFkVS5u2qgtZo41sRuiiTTAiEiE", "0", false);
+        for (QueryOrgTodoTasksResponseBody.QueryOrgTodoTasksResponseBodyTodoCards todo:allTodo) {
+            System.err.println(todo.taskId);
+        }
+    }
 }

+ 2 - 1
uas-office-dingtalk/src/main/java/com/usoftchina/uas/office/dingtalk/service/UasOaService.java

@@ -111,8 +111,9 @@ public class UasOaService extends AbstractService {
                                 leaves = DateUtil.format(new Date(lastWorkDay), "yyyy-MM-dd HH:mm:ss");
                             }
                             String userid = empDimissionInfoVo.getUserid();
+                            Long status = empDimissionInfoVo.getStatus();
                             int count1 = queryForObject("select count(1) from Turnover where to_dingtalkid='" + userid + "'", Integer.class);
-                            if (count1 <= 0) {
+                            if (count1 <= 0&&status==2) {
                                 int id = generateId("TURNOVER_SEQ");
                                 String code = generateCode("Turnover", 2);
                                 if (leaves != null) {