lfx 11 月之前
父节点
当前提交
0e6045a9aa

+ 44 - 1
src/main/java/com/muzhi/tianhe/controller/TBCallBackController.java

@@ -9,6 +9,10 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.lang.reflect.Array;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * TB事件回调 3_1
  * 1. 回调可选择加密与不加密方式, tb发送成功为上游, 注册服务为下游
@@ -22,6 +26,8 @@ public class TBCallBackController {
     @Autowired
     private ThTbService thTbService;
 
+    private static List<String> EVENT_NAME= Arrays.asList("v3.task.taskflowstatus.update","v3.task.archive","v3.task.customfield.update","v3.task.create");
+
     /**
      * * 回调说明 [ppExt: 字段更新回调, 判定字段ID, 避免循坏触发问题, 接口修改也会触发webhook]
      * * 1. 通过接口更操作的数据,也会与手动创建一样触发相同的回调, 除了项目更新接口调用实测不会触发回调, 手动修改正常回调
@@ -42,7 +48,7 @@ public class TBCallBackController {
 
         if (eventName.contains("task")) {
             log.info("[TB]任务回调, {}, {}", eventName, eventJson);
-            if(eventName.equals("v3.task.taskflowstatus.update")||eventName.equals("v3.task.archive")){
+            if(EVENT_NAME.contains(eventName)){
                 String taskId=eventJson.getJSONObject("data").getString("taskId");
                 try {
                     thTbService.task(taskId);
@@ -50,6 +56,15 @@ public class TBCallBackController {
                     e.printStackTrace();
                     log.error("回调执行出错!");
                 }
+            }else if(eventName.equals("v3.objectlink.create")&&eventJson.getJSONObject("data").getString("parentType").equals("task")){
+                String taskId=eventJson.getJSONObject("data").getString("parentId");
+                String linkedId=eventJson.getJSONObject("data").getString("linkedId");
+                try {
+                    thTbService.taskLink(taskId,linkedId);
+                }catch (Exception e){
+                    e.printStackTrace();
+                    log.error("回调执行出错!");
+                }
             }
             return success;
         }
@@ -62,4 +77,32 @@ public class TBCallBackController {
         log.info("----- [TB]已注册, 未处理的其它回调 -----, {}, {}", eventName, eventJson);
         return success;
     }
+
+    // 任务添加关联任务事件参数
+    // {
+    //    "eventId": "6670fac133e9e8b9c518ce82",
+    //    "resourceId": "",
+    //    "data": {
+    //        "created": "2024-06-18T03:10:57.736Z",
+    //        "creatorId": "65b1dc8355d0f38026a1c3db",
+    //        "linked": {
+    //            "content": "指标004"
+    //        },
+    //        "linkedId": "6666d59fe2a89ca43166a327",
+    //        "linkedType": "task",
+    //        "objectlinkId": "6670fac151169db36e20b2bb",
+    //        "organizationId": "65b1dca21ab0fa13be993595",
+    //        "parent": {
+    //            "content": "测试测试"
+    //        },
+    //        "parentId": "6670fa91928568dc13d1c3b5",
+    //        "parentType": "task",
+    //        "updated": "2024-06-18T03:10:57.736Z"
+    //    },
+    //    "hookId": "664d94b1fe0d331ff82ad0df",
+    //    "event": "v3.objectlink.create",
+    //    "category": "",
+    //    "orgId": "65b1dca21ab0fa13be993595",
+    //    "timestamp": 1718680257748
+    //}
 }

+ 2 - 0
src/main/java/com/muzhi/tianhe/service/ThTbService.java

@@ -4,4 +4,6 @@ public interface ThTbService {
 
     void task(String taskId);
 
+    void taskLink(String taskId,String linkedId);
+
 }

+ 16 - 15
src/main/java/com/muzhi/tianhe/service/impl/ThTbServiceImpl.java

@@ -75,6 +75,22 @@ public class ThTbServiceImpl implements ThTbService {
 
     }
 
+    @Override
+    public void taskLink(String taskId, String linkedId) {
+        JSONObject task=tbApiService.getTasksInfo(taskId).getJSONObject(0);
+        String projectId=task.getString("projectId");
+        // 先判断项目分组
+        JSONArray array=tbApiService.getProjectTag(projectId);
+        if(array==null||array.size()<1){
+            log.info("不属于战略部分组的项目,不处理");
+            return;
+        }
+        if(!Arrays.asList("65b77b8f7bbdd92f48e6920d","664d5b10e6451d2386a49b8b","664d5b15a1a96d9b5815d6fd").contains(array.getString(0))){
+            log.info("不属于战略部分组的项目,不处理");
+            return;
+        }
+    }
+
     public void updateTaskState(JSONObject task,String tfid){
         String projectId=task.getString("projectId");// 项目ID
         // 上级任务信息
@@ -322,21 +338,6 @@ public class ThTbServiceImpl implements ThTbService {
         return result;
     }
 
-
-    public String getType(int size){
-        switch (size){
-            case 1:
-                return"一级任务工作流";
-            case 2:
-                return "二级任务工作流";
-            case 3:
-                return "三级任务工作流";
-            case 4:
-                return "年度指标工作流";
-            default:return "";
-        }
-    }
-
     public void update(String projectId,String taskId,String tfsName,String tfid){
         log.info("任务[{}]状态修改为[{}]",taskId,tfsName);
         JSONObject tfsnext=tbApiService.getProjectStateId(projectId,tfsName,tfid,"").getJSONObject(0);

+ 2 - 2
src/test/java/com/muzhi/tianhe/TbTest.java

@@ -54,8 +54,8 @@ public class TbTest {
 
     @Test
     public void tbTest(){
-        String taskId="66583a09e30d72623e41914f";
-        thTbService.task(taskId);
+        String taskId="6678fc279270f997bf9ef44f";
+        thTbService.taskLink(taskId,"");
     }
 
     //ALTER TABLE `tianhe`