lfx vor 1 Jahr
Ursprung
Commit
61dece22a6

+ 5 - 0
src/main/java/com/muzhi/tianhe/service/impl/TbApiService.java

@@ -48,6 +48,11 @@ public class TbApiService {
         return result.getJSONArray("result");
     }
 
+    public JSONArray getTasksType(String projectId,String sfcIds){
+        JSONObject result=header(HttpRequest.get(PRIVATE_API_URL + "/v3/project/" + projectId + "/scenariofieldconfig/search?sfcIds="+sfcIds));
+        return result.getJSONArray("result");
+    }
+
     public JSONArray getTasksByType(String xmid,String rwlxid){
         JSONObject result=header(HttpRequest.get(PRIVATE_API_URL + "/v3/project/" + xmid + "/task/query?q=sfcId = " + rwlxid + "&pageSize=1000"));
         return result.getJSONArray("result");

+ 118 - 38
src/main/java/com/muzhi/tianhe/service/impl/ThTbServiceImpl.java

@@ -42,13 +42,15 @@ public class ThTbServiceImpl implements ThTbService {
         JSONObject taskType=((JSONObject) optional.get());
         String name=taskType.getString("name");
         String tfid=taskType.getString("taskflowId");
-        if(name.contains("变更流程")){
+        if(name.contains("变更")){
             log.info("变更流程");
-//            taskChange(task,taskId);
+            taskChange(task,taskId);
         }else if(name.contains("任务取消")){
+            // 2024.6.5跟小燕沟通后调整为取消
             log.info("任务取消");
 //            taskCancel(task,taskId);
         }else if(name.contains("新增流程")){
+            // 2024.6.5跟小燕沟通后调整为取消
             log.info("新增流程");
 //            String newName;
 //            if(name.contains("一级")){
@@ -140,57 +142,135 @@ public class ThTbServiceImpl implements ThTbService {
 
     public void taskChange(JSONObject task,String taskId){
         String projectId=task.getString("projectId");// 项目ID
-        // 查询项目自定义字段
-        List<JSONObject> list=tbApiService.getProjectCustomfield(projectId).toJavaList(JSONObject.class);
-        Optional optional = list.stream().filter(item -> "变更内容".equals(item.get("name"))&&item.containsKey("originalId")).findAny();
-        String keyId=((JSONObject) optional.get()).getString("id");
-        Optional optional2 = list.stream().filter(item -> "变更后内容".equals(item.get("name"))).findAny();
-        String valueId=((JSONObject) optional2.get()).getString("id");
-        // 查询任务中的自定义字段值
-        List<JSONObject> custs=task.getJSONArray("customfields").toJavaList(JSONObject.class);
-        Optional optional3 = custs.stream().filter(item -> valueId.equals(item.get("cfId"))).findAny();
-        String value=((JSONObject) optional3.get()).getJSONArray("value").getJSONObject(0).getString("title");
-        Optional optional4 = custs.stream().filter(item -> keyId.equals(item.get("cfId"))).findAny();
-        JSONObject idObj=((JSONObject) optional4.get()).getJSONArray("value").getJSONObject(0);
         // 查询关联任务
         JSONArray linkArray=tbApiService.getTaskLinks(taskId);
         if(linkArray==null||linkArray.size()<1){
             log.info("任务{}没有关联任务",taskId);
             return;
         }
+        // 查询项目自定义字段
+        Map<String,String> projectCusts=new HashMap<>();
+        List<JSONObject> list=tbApiService.getProjectCustomfield(projectId).toJavaList(JSONObject.class);
+        list.forEach(item -> projectCusts.put(item.getString("name"),item.getString("id")));
+        // 查询任务中的自定义字段值
+        Map<String,JSONArray> taskCustValues=new HashMap<>();
+        List<JSONObject> custs=task.getJSONArray("customfields").toJavaList(JSONObject.class);
+        custs.forEach(item -> taskCustValues.put(item.getString("cfId"),item.getJSONArray("value")));
+
+        String value=taskCustValues.get(projectCusts.get("变更后内容")).getJSONObject(0).getString("title");
+        JSONObject idObj=taskCustValues.get(projectCusts.get("内容变更/取消")).getJSONObject(0);
         String linkedId=linkArray.getJSONObject(0).getString("linkedId");
         log.info("任务[{}]字段:{}[{}]数据修改为:{}",linkedId,idObj.getString("title"),idObj.getString("id"),value);
-        if("664e9d5ae6451d2386a6d1bc".equals(idObj.getString("id"))){
-            tbApiService.updateTaskContent(linkedId,value);
-        }else if("664e9d5ae6451d2386a6d1bd".equals(idObj.getString("id"))){
-            Optional optional5 = list.stream().filter(item -> "权重".equals(item.get("name"))).findAny();
-            String qzId=((JSONObject) optional5.get()).getString("id");
-            tbApiService.updateTaskCustomfield(linkedId,qzId,value);
-        }else if("664e9d5ae6451d2386a6d1be".equals(idObj.getString("id"))){
-            JSONArray array=tbApiService.userSearch(value);
-            if(array==null||array.size()<1){
-                log.error("未查到该人员 查询条件:{},返回结果:{}",value,array);
-                return;
+
+        JSONObject linkeTask=tbApiService.getTasksInfo(linkedId).getJSONObject(0);
+        String linkSfcId=linkeTask.getString("sfcId");
+        JSONObject linkTaskType=tbApiService.getTasksType(projectId,linkSfcId).getJSONObject(0);
+        String linkTaskTypeName=linkTaskType.getString("name");
+
+        String qzId;
+        if("年度指标".equals(linkTaskTypeName)){
+            switch (idObj.getString("id")){
+                case "66581ea7d74759b91fab2806":
+                    // 年度指标
+                    tbApiService.updateTaskContent(linkedId,value);
+                    return;
+                case "665820165bf840a9d00f0a36":
+                    // 指标权重
+                    qzId=projectCusts.get("权重");
+                    break;
+                case "66581ea7d74759b91fab2809":
+                    // Q1目标
+                    qzId=projectCusts.get("Q1目标");
+                    break;
+                case "66581ea7d74759b91fab280a":
+                    // Q2目标
+                    qzId=projectCusts.get("Q2目标");
+                    break;
+                case "66581ea7d74759b91fab280b":
+                    // Q3目标
+                    qzId=projectCusts.get("Q3目标");
+                    break;
+                case "66581ea7d74759b91fab280c":
+                    // Q4目标
+                    qzId=projectCusts.get("Q4目标");
+                    break;
+                case "66581ebba1a96d9b58350495":
+                    // 年度指标验收依据
+                    qzId=projectCusts.get("验收依据");
+                    break;
+                case "66582147e30d72623e4108d3":
+                    log.info("任务取消");
+                    taskCancel(projectId,linkTaskType,linkedId);
+                    return;
+                default:
+                    log.info("非期望字段,暂不处理");
+                    return;
             }
-            tbApiService.updateTaskExecutor(linkedId,array.getJSONObject(0).getString("userId"));
+        }else if("三级任务,二级任务,一级任务".contains(linkTaskTypeName)){
+            switch (idObj.getString("id")){
+                case "66602856c563f93072f7bc2d":
+                    // 任务目标
+                    tbApiService.updateTaskContent(linkedId,value);
+                    return;
+                case "664e9d5ae6451d2386a6d1bd":
+                    // 任务权重
+                    if("三级任务".equals(linkTaskTypeName)){
+                        qzId=projectCusts.get("权重");
+                        tbApiService.updateTaskCustomfield(linkedId,qzId,value);
+                    }else{
+                        log.info("非三级任务,不修改权重");
+                        return;
+                    }
+                    break;
+                case "664e9d5ae6451d2386a6d1be":
+                    // 责任人
+                    qzId=projectCusts.get("责任人");
+                    JSONArray array=tbApiService.userSearch(value);
+                    if(array==null||array.size()<1){
+                        log.error("未查到该人员 查询条件:{},返回结果:{}",value,array);
+                        return;
+                    }
+                    value=array.getJSONObject(0).getString("userId");
+                    break;
+                case "665820165bf840a9d00f0a38":
+                    // 联席责任人
+                    qzId=projectCusts.get("联席责任人");
+                    JSONArray array2=tbApiService.userSearch(value);
+                    if(array2==null||array2.size()<1){
+                        log.error("未查到该人员 查询条件:{},返回结果:{}",value,array2);
+                        return;
+                    }
+                    value=array2.getJSONObject(0).getString("userId");
+                    break;
+                case "66582147e30d72623e4108d3":
+                    log.info("任务取消");
+                    taskCancel(projectId,linkTaskType,linkedId);
+                    return;
+                default:
+                    log.info("非期望字段,暂不处理");
+                    return;
+            }
+        }else{
+            log.info("关联任务的任务类型[{}]非期望值",linkTaskTypeName);
+            return;
         }
+        tbApiService.updateTaskCustomfield(linkedId,qzId,value);
     }
 
 
-    public void taskCancel(JSONObject task,String taskId){
+    public void taskCancel(String projectId,JSONObject taskType,String taskId){
         // 查询关联任务
-        JSONArray linkArray=tbApiService.getTaskLinks(taskId);
-        if(linkArray==null||linkArray.size()<1){
-            log.info("任务{}没有关联任务",taskId);
-            return;
+        String tfid=taskType.getString("taskflowId");
+        update(projectId,taskId,"取消",tfid);
+        JSONArray sonTasks=tbApiService.getTasksByParent(taskId);
+        if(sonTasks!=null&&sonTasks.size()>0){
+            for (int i = 0; i < sonTasks.size(); i++) {
+                String sonTaskId=sonTasks.getJSONObject(i).getString("id");
+                JSONObject sonTaskType=tbApiService.getTasksType(projectId,sonTaskId).getJSONObject(0);
+                taskCancel(projectId,sonTaskType,sonTaskId);
+            }
         }
-        String linkedId=linkArray.getJSONObject(0).getString("linkedId");
-        log.info("任务[{}]状态修改为[取消]",linkedId);
-        JSONObject linkedTask=tbApiService.getTasksInfo(linkedId).getJSONObject(0);
-        String projectId=linkedTask.getString("projectId");
-        JSONObject tf=tbApiService.getProjectTfid(projectId,getType(linkedTask.getJSONArray("ancestorIds").size()+1)).getJSONObject(0);
-        JSONObject tfsnext=tbApiService.getProjectStateId(projectId,"取消",tf.getString("id"),"").getJSONObject(0);
-        tbApiService.updateTaskStatus(linkedId,tfsnext.getString("id"));
+
     }
 
     public void taskAdd(JSONObject task,String taskId,JSONObject newTaskType){

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

@@ -54,14 +54,7 @@ public class TbTest {
 
     @Test
     public void tbTest(){
-        String projectId="664c52c05a93ac02400705fd";// 三级任务测试项目
-        String taskType="664c52c158a65f33469b6749";// 三级任务
-        String taskId="665819f41dd82bf411486330";// 测试三级任务-010202
-        String parentTaskId="664c5537351868a429dfd9da"; // 测试二级任务
-//        JSONArray array=tbApiService.getTasksType(projectId);
-//        JSONArray array=tbApiService.getProjectState(projectId);
-
-//        System.out.println(array);
+        String taskId="66583a09e30d72623e41914f";
         thTbService.task(taskId);
     }