lfx 1 年之前
父节点
当前提交
a06e9989a0

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

@@ -44,7 +44,12 @@ public class TBCallBackController {
             log.info("[TB]任务回调, {}, {}", eventName, eventJson);
             if(eventName.equals("v3.task.taskflowstatus.update")||eventName.equals("v3.task.archive")){
                 String taskId=eventJson.getJSONObject("data").getString("taskId");
-                thTbService.task(taskId);
+                try {
+                    thTbService.task(taskId);
+                }catch (Exception e){
+                    e.printStackTrace();
+                    log.error("回调执行出错!");
+                }
             }
             return success;
         }

+ 53 - 32
src/main/java/com/muzhi/tianhe/service/impl/ThTbServiceImpl.java

@@ -39,70 +39,85 @@ public class ThTbServiceImpl implements ThTbService {
         String sfcId=task.getString("sfcId");
         List<JSONObject> list=tbApiService.getTasksType(projectId).toJavaList(JSONObject.class);
         Optional optional = list.stream().filter(item -> sfcId.equals(item.get("id"))).findAny();
-        String name=((JSONObject) optional.get()).getString("name");
+        JSONObject taskType=((JSONObject) optional.get());
+        String name=taskType.getString("name");
+        String tfid=taskType.getString("taskflowId");
         if(name.contains("变更流程")){
             log.info("变更流程");
-            taskChange(task,taskId);
+//            taskChange(task,taskId);
         }else if(name.contains("任务取消")){
             log.info("任务取消");
-            taskCancel(task,taskId);
+//            taskCancel(task,taskId);
         }else if(name.contains("新增流程")){
             log.info("新增流程");
-            String newName;
-            if(name.contains("一级")){
-                newName="一级任务";
-            }else if(name.contains("二级")){
-                newName="二级任务";
-            }else if(name.contains("三级")){
-                newName="三级任务";
-            }else{
-                log.error("任务类型名称判断异常:{}",name);
-                return;
-            }
-            Optional optional2 = list.stream().filter(item -> newName.equals(item.get("name"))).findAny();
-            JSONObject newTaskType=((JSONObject) optional2.get());
-            taskAdd(task,taskId,newTaskType);
+//            String newName;
+//            if(name.contains("一级")){
+//                newName="一级任务";
+//            }else if(name.contains("二级")){
+//                newName="二级任务";
+//            }else if(name.contains("三级")){
+//                newName="三级任务";
+//            }else{
+//                log.error("任务类型名称判断异常:{}",name);
+//                return;
+//            }
+//            Optional optional2 = list.stream().filter(item -> newName.equals(item.get("name"))).findAny();
+//            JSONObject newTaskType=((JSONObject) optional2.get());
+//            taskAdd(task,taskId,newTaskType);
         }else if(name.equals("年度指标")){
             log.info("年度指标");
-            updateTaskState(task);
+            updateTaskState(task,tfid);
         }else{
             log.info("任务 {} 任务类型:{} 非期望类型任务 不处理",task.getString("content"),name);
         }
 
     }
 
-    public void updateTaskState(JSONObject task){
+    public void updateTaskState(JSONObject task,String tfid){
         String projectId=task.getString("projectId");// 项目ID
         // 上级任务信息
         String parentTaskId=task.getString("parentTaskId");// 上级任务ID
         JSONObject parentTask=tbApiService.getTasksInfo(parentTaskId).getJSONObject(0);
         JSONObject parentTaskTfs=tbApiService.getProjectStateId(projectId,"","",parentTask.getString("tfsId")).getJSONObject(0);
         String parentTaskTfsName=parentTaskTfs.getString("name");
-        String type=getType(task.getJSONArray("ancestorIds").size());
         String newTfsName;
         // 循环获取其他同级任务状态,判断是否有更高级别的任务状态
         // 同级红灯状态ID
-        JSONObject tf=tbApiService.getProjectTfid(projectId,getType(task.getJSONArray("ancestorIds").size()+1)).getJSONObject(0);
-        JSONObject redTfs=tbApiService.getProjectStateId(projectId,"红灯",tf.getString("id"),"").getJSONObject(0);
+        JSONObject redTfs=tbApiService.getProjectStateId(projectId,"红灯",tfid,"").getJSONObject(0);
         String redId=redTfs.getString("id");
         // 同级黄状态ID
-        JSONObject yellowTfs=tbApiService.getProjectStateId(projectId,"黄灯",tf.getString("id"),"").getJSONObject(0);
+        JSONObject yellowTfs=tbApiService.getProjectStateId(projectId,"黄灯",tfid,"").getJSONObject(0);
         String yellowId=yellowTfs.getString("id");
+        // 指标任务状态
+        String redZbId,yellowZbId;
+
+        JSONObject zbtf=tbApiService.getProjectTfid(projectId,"年度指标工作流").getJSONObject(0);
+        if(tfid.equals(zbtf.getString("id"))){
+            redZbId=redId;
+            yellowZbId=yellowId;
+        }else{
+            JSONObject redZbTfs=tbApiService.getProjectStateId(projectId,"红灯",zbtf.getString("id"),"").getJSONObject(0);
+            redZbId=redZbTfs.getString("id");
+            // 同级黄状态ID
+            JSONObject yellowZbTfs=tbApiService.getProjectStateId(projectId,"黄灯",zbtf.getString("id"),"").getJSONObject(0);
+            yellowZbId=yellowZbTfs.getString("id");
+        }
+
         JSONArray array=tbApiService.getTasksByParent(parentTaskId);
         String color="绿灯";
         int redNum=0,yellowNum=0;
         for (int i = 0; i < array.size(); i++) {
             JSONObject taskT=array.getJSONObject(i);
-            if(redId.equals(taskT.getString("tfsId"))){
+            if(redId.equals(taskT.getString("tfsId"))||redZbId.equals(taskT.getString("tfsId"))){
                 redNum++;
-            }else if(yellowId.equals(taskT.getString("tfsId"))){
+            }else if(yellowId.equals(taskT.getString("tfsId"))||yellowZbId.equals(taskT.getString("tfsId"))){
                 yellowNum++;
             }
         }
-        if(yellowNum>=2){
+        if(yellowNum>=1){
             color="黄灯";
         }
-        if(redNum>=2){
+        if(redNum>=1){
             color="红灯";
         }
         if(!color.equals(parentTaskTfsName)){
@@ -110,9 +125,16 @@ public class ThTbServiceImpl implements ThTbService {
         }else{
             return;
         }
-        update(projectId,parentTaskId,newTfsName,type);
+        // 任务类型判断
+        String parentSfcId=parentTask.getString("sfcId");
+        List<JSONObject> list=tbApiService.getTasksType(projectId).toJavaList(JSONObject.class);
+        Optional optional = list.stream().filter(item -> parentSfcId.equals(item.get("id"))).findAny();
+        JSONObject parentTaskType=((JSONObject) optional.get());
+        String parentTfid=parentTaskType.getString("taskflowId");
+
+        update(projectId,parentTaskId,newTfsName,parentTfid);
         if(!PublicUtil.isNull(parentTask.getString("parentTaskId"))){
-            updateTaskState(parentTask);
+            updateTaskState(parentTask,parentTfid);
         }
     }
 
@@ -235,10 +257,9 @@ public class ThTbServiceImpl implements ThTbService {
         }
     }
 
-    public void update(String projectId,String taskId,String tfsName,String type){
+    public void update(String projectId,String taskId,String tfsName,String tfid){
         log.info("任务[{}]状态修改为[{}]",taskId,tfsName);
-        JSONObject tf=tbApiService.getProjectTfid(projectId,type).getJSONObject(0);
-        JSONObject tfsnext=tbApiService.getProjectStateId(projectId,tfsName,tf.getString("id"),"").getJSONObject(0);
+        JSONObject tfsnext=tbApiService.getProjectStateId(projectId,tfsName,tfid,"").getJSONObject(0);
         tbApiService.updateTaskStatus(taskId,tfsnext.getString("id"));
     }
 }

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

@@ -56,7 +56,7 @@ public class TbTest {
     public void tbTest(){
         String projectId="664c52c05a93ac02400705fd";// 三级任务测试项目
         String taskType="664c52c158a65f33469b6749";// 三级任务
-        String taskId="6653ee22e30d72623e37cd28";// 测试三级任务-010202
+        String taskId="665819f41dd82bf411486330";// 测试三级任务-010202
         String parentTaskId="664c5537351868a429dfd9da"; // 测试二级任务
 //        JSONArray array=tbApiService.getTasksType(projectId);
 //        JSONArray array=tbApiService.getProjectState(projectId);