Przeglądaj źródła

Merge branch 'master' of https://mc.cloudpure.cn/mjava/cont

wzy 1 tydzień temu
rodzic
commit
28e6511e12

+ 84 - 0
mjava-ounuo/src/main/java/com/malk/tuosi/event/McTbEventImpl.java

@@ -0,0 +1,84 @@
+package com.malk.tuosi.event;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.delegate.TBEvent;
+import com.malk.server.common.McException;
+import com.malk.service.teambition.TBClient;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Primary
+@Service
+@Slf4j
+public class McTbEventImpl implements TBEvent {
+
+    @Autowired
+    private TBClient tbClient;
+
+//    @Async
+    @Override
+    public void callBackTask(JSONObject eventJson) {
+        String event = eventJson.getString("event");
+        if(event.equals("v3.task.node.status.update")){
+            JSONObject data = eventJson.getJSONObject("data");
+            String taskId = data.getString("taskId");
+            String status = data.getString("status");
+            String nodeId = data.getString("nodeId");
+            String creatorId = data.getString("creatorId");
+            Map task = tbClient.queryTaskDetail(taskId,null,null).get(0);
+            if(!"6970a3ff4f887b90bfdbe7e3".equals(String.valueOf(task.get("projectId")))){
+                return;
+            }
+//            if(!Arrays.asList("622ee3450cf3bb5e1a486f1f","61a9e8a36355609fb6383d40").contains(creatorId)){
+//                return;
+//            }
+            if(status.equals("finish")||status.equals("begin")){
+                boolean isBegin = status.equals("begin");
+                List<Map> list=tbClient.queryNodeList(taskId);
+                Map node = _getNodeDetail(list,nodeId);
+                if(String.valueOf(node.get("name")).contains("接单")){
+                    List<String> assigneeIds = isBegin? new ArrayList<>() :UtilMap.getList(node,"assigneeIds");
+                    String startDate = isBegin? null: UtilMap.getString(node,"startDate");
+                    String dueDate = isBegin? null: UtilMap.getString(node,"dueDate");
+                    Map nextMap=_getNextNode(list,nodeId);
+                    if(nextMap!=null){
+                        String nextId = UtilMap.getString(nextMap,"id");
+                        tbClient.updateNodeById(taskId,nextId,assigneeIds,startDate,dueDate,creatorId);
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public void callBackProject(JSONObject eventJson) {
+
+    }
+
+    @Async
+    @Override
+    public void callBackWorktime(JSONObject eventJson) {
+    }
+
+    private Map _getNodeDetail(List<Map> list, String nodeId) {
+        Optional optional = list.stream().filter(item -> nodeId.equals(item.get("id"))).findAny();
+        McException.assertAccessException(!optional.isPresent(), nodeId + ": 节点不存在");
+        return (Map) optional.get();
+    }
+
+    private Map _getNextNode(List<Map> list, String nodeId) {
+        for(Map map : list) {
+            List<String> prevIds = UtilMap.getList(map,"prevIds");
+            if(prevIds.contains(nodeId)){
+                return map;
+            }
+        }
+        return null;
+    }
+}

+ 8 - 2
mjava-ounuo/src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 # 环境配置
 server:
-  port: 8082
+  port: 9000
   servlet:
     context-path: /api/ounuo
 
@@ -111,4 +111,10 @@ mybatis-plus:
 
 #定时器
 enable:
-  scheduling: true
+  scheduling: true
+
+teambition:
+  AppID: 6874ba11d22c73565fd8af9d
+  AppSecret: 4JBgPwpctG27SuZrVVeCrXoiVCjie9ID
+  TenantId: 61a8c26719c3b5ffe9c4cffb
+  OperatorId: 616fb6f78ad4104a10515809    # 公共账号, 需要有操作权限 [牧语]

+ 7 - 1
mjava-ounuo/src/main/resources/application-prod.yml

@@ -96,4 +96,10 @@ mybatis-plus:
 
 #定时器
 enable:
-  scheduling: true
+  scheduling: true
+
+teambition:
+  AppID: 6874ba11d22c73565fd8af9d
+  AppSecret: 4JBgPwpctG27SuZrVVeCrXoiVCjie9ID
+  TenantId: 61a8c26719c3b5ffe9c4cffb
+  OperatorId: 616fb6f78ad4104a10515809    # 公共账号, 需要有操作权限 [牧语]