lfx 6 місяців тому
батько
коміт
448c9d2ef6

+ 35 - 0
src/main/java/com/muzhi/tianhe/controller/TbController.java

@@ -1,7 +1,12 @@
 package com.muzhi.tianhe.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.aliwork.YDSearch;
 import com.malk.server.common.McR;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
 import com.muzhi.tianhe.entity.Tianhe;
 import com.muzhi.tianhe.entity.vo.TianheDataVo;
 import com.muzhi.tianhe.entity.vo.TianheQuery;
@@ -14,6 +19,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.http.HttpResponse;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
@@ -22,6 +28,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.time.Instant;
 import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -127,4 +134,32 @@ public class TbController {
         return thTbService.taskUpdate(param);
     }
 
+    @PostMapping("taskCancel")
+    public McR taskCancel(@RequestBody JSONObject param){
+        return thTbService.taskCancel(param);
+    }
+
+    @Autowired
+    private YDClient ydClient;
+
+    @GetMapping("/redirect-me")
+    public ResponseEntity<Void> getRedirectUrl(String type,String state) {
+        try {
+            List<Map> list = (List<Map>) ydClient.queryData(YDParam.builder().formUuid("FORM-B40945246BBD4CD8A277DA8BE5949C1DJD3Z").searchCondition(
+                    JSONObject.toJSONString(Arrays.asList(new YDSearch("selectField_m2mpdvul",type,"type", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ),
+                            new YDSearch("selectField_m2mpdvum",state,"state", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ)))
+            ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
+            if(list!=null&&list.size()>0){
+                return ResponseEntity.status(302).header("Location", UtilMap.getString(UtilMap.getMap(list.get(0),"formData"),"textField_m2mpdvun")).build();
+            }else{
+                return ResponseEntity.status(302).header("Location", "https://z6eiye.aliwork.com/APP_D5TQPJQBB21M7BCJUMO5/workbench/FORM-0DCA7BDE2DF445358A242600041CE55E6TAP").build();
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResponseEntity.status(302).header("Location", "https://z6eiye.aliwork.com/APP_D5TQPJQBB21M7BCJUMO5/workbench/FORM-0DCA7BDE2DF445358A242600041CE55E6TAP").build();
+        }
+
+
+    }
+
 }

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

@@ -20,4 +20,6 @@ public interface ThTbService {
 
     McR taskUpdate(JSONObject param);
 
+    McR taskCancel(JSONObject param);
+
 }

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

@@ -61,6 +61,11 @@ public class TbApiService {
         return result.getJSONArray("result");
     }
 
+    public JSONArray getTasksTypeByQ(String projectId,String q){
+        JSONObject result=header(HttpRequest.get(PRIVATE_API_URL + "/v3/project/" + projectId + "/scenariofieldconfig/search?q="+q));
+        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");
@@ -71,6 +76,11 @@ public class TbApiService {
         return result.getJSONArray("result");
     }
 
+    public JSONArray getTasksByQ(String xmid,String q){
+        JSONObject result=header(HttpRequest.get(PRIVATE_API_URL + "/v3/project/" + xmid + "/task/query?q=" + q + "&pageSize=1000"));
+        return result.getJSONArray("result");
+    }
+
     public JSONArray getTasksInfo(String taskId){
         JSONObject result=header(HttpRequest.get(PRIVATE_API_URL + "/v3/task/query?taskId="+taskId));
         return result.getJSONArray("result");

+ 43 - 38
src/main/java/com/muzhi/tianhe/service/impl/TbServiceImpl.java

@@ -104,47 +104,52 @@ public class TbServiceImpl extends ServiceImpl<TianheMapper, Tianhe> implements
     }
 
     private void synprojectState(String projectId){
-        JSONObject project=tbApiService.getProjectInfo(projectId).getJSONObject(0);
-        boolean projectEnd=isFuture(project.getString("endDate")); // 项目是否未结束
-        JSONObject state=getProjectState(projectId);
-        String stageName=state.getString("name");
-        String degree=state.getString("degree");
-        if(!projectEnd&&degree.equals("normal")){
-            // 结束且绿灯
-            return;
-        }
-        // 判断项目是否截止
-        // 查询项目下任务列ID
-        String stageId=tbApiService.getStageId(projectId,stageName).getJSONObject(0).getString("id");
-        // 查询项目下任务
-        List<Map> list=tbApiService.getTasksByStageId(projectId,stageId).toJavaList(Map.class);
-        // 循环判断任务是否逾期
-        list=list.stream().filter(item -> UtilMap.getBoolean(item,"isDone") == false &&
-                isFuture(UtilMap.getString(item,"dueDate")) == false
-        ).collect(Collectors.toList());
-        if(list!=null&&list.size()>0){
-            // 任务有逾期情况
-            if(degree.equals("normal")){
-                if(projectEnd){
-                    // 项目未结束
-                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","逾期",stageName)); // 状态绿灯修改为黄灯
-                }else{
-                    // 项目结束
-                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","项目结束逾期",stageName)); // 状态绿灯修改为红灯
-                }
-            }else if(degree.equals("risky")){
-                if(projectEnd){
+        try {
+            JSONObject project=tbApiService.getProjectInfo(projectId).getJSONObject(0);
+            boolean projectEnd=isFuture(project.getString("endDate")); // 项目是否未结束
+            JSONObject state=getProjectState(projectId);
+            String stageName=state.getString("name");
+            String degree=state.getString("degree");
+            if(!projectEnd&&degree.equals("normal")){
+                // 结束且绿灯
+                return;
+            }
+            // 判断项目是否截止
+            // 查询项目下任务列ID
+            String stageId=tbApiService.getStageId(projectId,stageName).getJSONObject(0).getString("id");
+            String sfcId=tbApiService.getTasksTypeByQ(projectId,"里程碑").getJSONObject(0).getString("id");
+            String q="sfcId="+sfcId+" AND isDone=false AND stageId = "+stageId;
+            // 查询项目下任务
+            List<Map> list=tbApiService.getTasksByQ(projectId,q).toJavaList(Map.class);
+            // 循环判断任务是否逾期
+            list=list.stream().filter(item -> isFuture(UtilMap.getString(item,"dueDate")) == false
+            ).collect(Collectors.toList());
+            if(list!=null&&list.size()>0){
+                // 任务有逾期情况
+                if(degree.equals("normal")){
+                    if(projectEnd){
+                        // 项目未结束
+                        tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","逾期",stageName)); // 状态绿灯修改为黄灯
+                    }else{
+                        // 项目结束
+                        tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","urgent","项目结束逾期",stageName)); // 状态绿灯修改为红灯
+                    }
+                }else if(degree.equals("risky")){
+                    if(projectEnd){
 
-                }else{
-                    // 项目结束
-                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","项目结束逾期",stageName)); // 状态黄灯修改为红灯
+                    }else{
+                        // 项目结束
+                        tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","urgent","项目结束逾期",stageName)); // 状态黄灯修改为红灯
+                    }
+                }
+            }else{
+                // 任务没逾期情况
+                if(degree.equals("risky")||degree.equals("urgent")){
+                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","normal","正常",stageName)); // 状态黄灯修改为绿灯
                 }
             }
-        }else{
-            // 任务没逾期情况
-            if(degree.equals("risky")){
-                tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","normal","正常",stageName)); // 状态黄灯修改为绿灯
-            }
+        }catch (Exception e){
+            e.printStackTrace();
         }
     }
 

+ 51 - 4
src/main/java/com/muzhi/tianhe/service/impl/ThTbServiceImpl.java

@@ -57,7 +57,7 @@ public class ThTbServiceImpl implements ThTbService {
             if(name.contains("变更")){
                 log.info("变更流程");
                 taskChange(task,taskId);
-            }else if(name.equals("年度指标")){
+            }else if(name.contains("年度指标")){
                 log.info("年度指标");
                 updateTaskState(task,tfid);
             }else{
@@ -314,7 +314,7 @@ public class ThTbServiceImpl implements ThTbService {
         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);
+                JSONObject sonTaskType=tbApiService.getTasksType(projectId,sonTasks.getJSONObject(i).getString("sfcId")).getJSONObject(0);
                 taskCancel(projectId,sonTaskType,sonTaskId);
             }
         }
@@ -380,19 +380,38 @@ public class ThTbServiceImpl implements ThTbService {
     public void taskCustChange(JSONObject task,JSONObject data){
         String projectId=task.getString("projectId");// 项目ID
         String customfieldId=data.getString("customfieldId");// 变更的自定义字段ID
-        JSONArray array=data.getJSONArray("customfieldValue");// 责人
+        JSONArray array=data.getJSONArray("customfieldValue");// 责
         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")));
         if(!customfieldId.equals(projectCusts.get("责任人"))){
             return;
         }
+        Map<String,String> projectSfc=new HashMap<>();
+        List<JSONObject> list2=tbApiService.getTasksType(projectId).toJavaList(JSONObject.class);
+        list2.forEach(item -> projectSfc.put(item.getString("id"),item.getString("name")));
         String cid=projectCusts.get("上级任务责任人");
         JSONArray tasks=tbApiService.getTasksByParent(task.getString("id"));
         for (int i = 0; i < tasks.size(); i++) {
             JSONObject taskDetail=tasks.getJSONObject(i);
             String id=taskDetail.getString("id");
-            tbApiService.updateTaskCustomfield(id,cid,array);
+            if(projectSfc.get(taskDetail.getString("sfcId")).contains("指标")){
+                // 指标  查询下级任务
+                JSONArray tasks2=tbApiService.getTasksByParent(id);
+                for (int j = 0; j < tasks2.size(); j++) {
+                    JSONObject taskDetail2=tasks2.getJSONObject(j);
+                    String id2=taskDetail2.getString("id");
+                    if(projectSfc.get(taskDetail2.getString("sfcId")).contains("指标")){
+                        // 还是指标不处理
+                    }else{
+                        // 任务  更新 上级任务责任人
+                        tbApiService.updateTaskCustomfield(id2,cid,array);
+                    }
+                }
+            }else{
+                // 任务  更新 上级任务责任人
+                tbApiService.updateTaskCustomfield(id,cid,array);
+            }
         }
     }
 
@@ -434,6 +453,7 @@ public class ThTbServiceImpl implements ThTbService {
         tbApiService.updateTaskCustomfield(task.getString("id"),projectCusts.get(custName),value);
     }
 
+
     @Override
     public void syncState() {
         syncStateByTag(PROJECT_TAG_ID);
@@ -522,6 +542,9 @@ public class ThTbServiceImpl implements ThTbService {
             for (int i = 0; i < tasks.size(); i++) {
                 JSONObject task = tasks.getJSONObject(i);
                 log.info("同步任务,任务编号:[{}]进度:[{}/{}]",task.getString("id"),i+1,tasks.size());
+                if("取消".equals(map.get(task.getString("tfsId")))){
+                    continue;
+                }
                 Map saveMap=UtilMap.map("textField_m0rkuewb, textField_m0rkuewd, textField_m0rkuewc, textField_m0rkuewe, selectField_m0rkuewk, textField_m0vtq84z, textField_m0vtq850"
                         ,task.getString("id"),task.getString("content")
                         ,projectId,project.getString("name"),map.get(task.getString("tfsId"))
@@ -646,16 +669,19 @@ public class ThTbServiceImpl implements ThTbService {
     public McR taskUpdate(JSONObject param) {
         String type=param.getString("type");
         String taskId=param.getString("taskId");
+        String ydKey=param.getString("ydKey");
         if(type.equals("content")){
             // 标题
             tbApiService.updateTaskLock(taskId,false,Arrays.asList(UtilMap.map("action","content$update")));
             tbApiService.updateTaskContent(taskId,param.getString("content"));
             tbApiService.updateTaskLock(taskId,true,Arrays.asList(UtilMap.map("action","content$update")));
+            updateYdData(UtilMap.map(ydKey,param.getString("content")),taskId);
         }else if(type.equals("executorId")){
             // 执行人
             tbApiService.updateTaskLock(taskId,false,Arrays.asList(UtilMap.map("action","executorId$update")));
             tbApiService.updateTaskExecutor(taskId,tbApiService.getUserId(param.getString("executorId"),false));
             tbApiService.updateTaskLock(taskId,true,Arrays.asList(UtilMap.map("action","executorId$update")));
+            updateYdData(UtilMap.map(ydKey,Arrays.asList(param.getString("executorId"))),taskId);
         }else if(type.equals("qz")){
             // 权重
             String[] taskIds=taskId.split(",");
@@ -667,6 +693,7 @@ public class ThTbServiceImpl implements ThTbService {
                 tbApiService.updateTaskLock(taskIds[i],false,Arrays.asList(UtilMap.map("action","cf:"+param.getString("cId")+"$update")));
                 tbApiService.updateTaskCustomfield(taskIds[i],param.getString("cId"),qzValues[i]);
                 tbApiService.updateTaskLock(taskIds[i],false,Arrays.asList(UtilMap.map("action","cf:"+param.getString("cId")+"$update")));
+                updateYdData(UtilMap.map(ydKey,qzValues[i]),taskIds[i]);
             }
         }else if(type.equals("lxzrr")){
             // 联系责任人
@@ -679,17 +706,37 @@ public class ThTbServiceImpl implements ThTbService {
             tbApiService.updateTaskLock(taskId,false,Arrays.asList(UtilMap.map("action","cf:"+param.getString("cId")+"$update")));
             tbApiService.updateTaskCustomfield(taskId,param.getString("cId"),array);
             tbApiService.updateTaskLock(taskId,true,Arrays.asList(UtilMap.map("action","cf:"+param.getString("cId")+"$update")));
+            updateYdData(UtilMap.map(ydKey,ids),taskId);
         }else if(type.equals("custValue")){
             // 自定义字段
             tbApiService.updateTaskLock(taskId,false,Arrays.asList(UtilMap.map("action","cf:"+param.getString("cId")+"$update")));
             tbApiService.updateTaskCustomfield(taskId,param.getString("cId"),param.getString("cValue"));
             tbApiService.updateTaskLock(taskId,true,Arrays.asList(UtilMap.map("action","cf:"+param.getString("cId")+"$update")));
+            updateYdData(UtilMap.map(ydKey,param.getString("cValue")),taskId);
         }else{
             return McR.error("201","type 错误");
         }
         return McR.success();
     }
 
+    private void updateYdData(Map saveMap,String taskid){
+        ydClient.operateData(YDParam.builder().formUuid(_matchFormUuid("TASK"))
+                .formDataJson(JSONObject.toJSONString(saveMap))
+                .searchCondition(JSONObject.toJSONString(Arrays.asList(new YDSearch("textField_m0rkuewb",taskid,"taskid", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ))))
+                .build(), YDConf.FORM_OPERATION.upsert);
+    }
+
+    @Override
+    public McR taskCancel(JSONObject param) {
+        String taskId = param.getString("taskId");
+        JSONObject task = tbApiService.getTasksInfo(taskId).getJSONObject(0);
+        String projectId = task.getString("projectId");
+        String sfcId=task.getString("sfcId");
+        JSONObject taskType=tbApiService.getTasksType(projectId,sfcId).getJSONObject(0);
+        taskCancel(projectId,taskType,taskId);
+        return McR.success();
+    }
+
     //获取项目任务类型
     public JSONArray getXiangmuRenwuLeixing(String xmid){
         JSONArray array=tbApiService.getTasksType(xmid);

+ 2 - 2
src/main/resources/application-prod.yml

@@ -4,8 +4,8 @@ server:
     context-path: /tianhe
 spring:
   datasource:
-#    url: jdbc:mysql://127.0.0.1:3306/dingtalk?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
-    url: jdbc:mysql://47.97.181.40:3306/dingtalk?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+    url: jdbc:mysql://127.0.0.1:3306/dingtalk?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
+#    url: jdbc:mysql://47.97.181.40:3306/dingtalk?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
     username: root
     password: cp-root@2022++
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 7 - 146
src/test/java/com/muzhi/tianhe/TbTest.java

@@ -1,40 +1,16 @@
 package com.muzhi.tianhe;
 
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.malk.server.aliwork.YDConf;
-import com.malk.server.aliwork.YDParam;
-import com.malk.server.aliwork.YDSearch;
 import com.malk.service.aliwork.YDClient;
-import com.malk.utils.UtilMap;
-import com.muzhi.tianhe.service.AccessTokenService;
 import com.muzhi.tianhe.service.TbService;
 import com.muzhi.tianhe.service.ThTbService;
 import com.muzhi.tianhe.service.impl.TbApiService;
-import com.muzhi.tianhe.util.PublicUtil;
 import lombok.extern.slf4j.Slf4j;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTimeUtils;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
-import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.time.format.DateTimeParseException;
-import java.util.*;
-import java.util.stream.Collectors;
-
 @Slf4j
 @SpringBootTest(classes = TianHeApplication.class)
 public class TbTest {
@@ -49,16 +25,7 @@ public class TbTest {
     @Test
     public void test(){
         try {
-//            tbService.removeTianhe();
-//            tbService.getXiangmu();
-//            List users=tbService.projectMember("65eefe214f2eb1fe4e88b557");
-//            log.info("u:{}",users);
-//            tbService.test();
-//            tbService.getDingUserId("");
-            tbService.asyncXm("66e3f8b0ebdbe2340552e91c");
-//            Thread.sleep(1000*60);
-//            JSONArray array=tbApiService.getProjectState("65efed344f2eb1fe4e88c81f");
-//            System.out.println(array);
+            tbService.asyncXm("66973433842f06a0e67ec766");
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -71,123 +38,17 @@ public class TbTest {
 
     @Test
     public void tbTest(){
-        String taskId="66712bd9257b3dca3cf99296";
-        thTbService.task(taskId,"0",JSONObject.parseObject(data));
+        String taskId="6710c4ff790cb0cecab2f993";
+//        thTbService.task(taskId,"0",JSONObject.parseObject(data));
+        JSONArray array=tbApiService.getTasksInfo(taskId);
+        log.info("{}",array);
     }
 
-    //ALTER TABLE `tianhe`
-    //ADD COLUMN `glxiangmubianhao`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glshuoshupingtai`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmuguishu`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmujibie`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glsjlcy`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glchengbenzhongxin`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmuyusuan`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glyusuanzhixingqingkuang`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glsfsygjrwfj`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glguanjianrenwumingcheng`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmugongqi`  varchar(255) NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmumubiao`  text NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmujiazhi`  text NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmufanwei`  text NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmushishicelue`  text NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmujili`  text NULL AFTER `taskid`,
-    //ADD COLUMN `glxiangmuzhuyaofengxian`  text NULL AFTER `taskid`;
-
     @Test
     public void syncStatus(){
-        thTbService.syncState();
+//        thTbService.syncState();
 //        thTbService.syncStateProject("66651dd9abba8250461819d6");
-//        String a=tbApiService.getUserId("153620324221442254",false);
-//        System.out.println(a);
-
-//        String projectId="66e3f8b0ebdbe2340552e91c";
-//        JSONObject project=tbApiService.getProjectInfo(projectId).getJSONObject(0);
-//        boolean projectEnd=isFuture(project.getString("endDate")); // 项目是否未结束
-//        JSONObject state=getProjectState(projectId);
-//        String stageName=state.getString("name");
-//        String degree=state.getString("degree");
-//        if(!projectEnd&&degree.equals("normal")){
-//            // 结束且绿灯
-//            return;
-//        }
-//        // 判断项目是否截止
-//        // 查询项目下任务列ID
-//        String stageId=tbApiService.getStageId(projectId,stageName).getJSONObject(0).getString("id");
-//        // 查询项目下任务
-//        List<Map> list=tbApiService.getTasksByStageId(projectId,stageId).toJavaList(Map.class);
-//        // 循环判断任务是否逾期
-//        list=list.stream().filter(item -> UtilMap.getBoolean(item,"isDone") == false &&
-//                isFuture(UtilMap.getString(item,"dueDate")) == false
-//        ).collect(Collectors.toList());
-//        if(list!=null&&list.size()>0){
-//            // 任务有逾期情况
-//            if(degree.equals("normal")){
-//                if(projectEnd){
-//                    // 项目未结束
-//                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","逾期",stageName)); // 状态绿灯修改为黄灯
-//                }else{
-//                    // 项目结束
-//                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","项目结束逾期",stageName)); // 状态绿灯修改为红灯
-//                }
-//            }else if(degree.equals("risky")){
-//                if(projectEnd){
-//
-//                }else{
-//                    // 项目结束
-//                    tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","risky","项目结束逾期",stageName)); // 状态黄灯修改为红灯
-//                }
-//            }
-//        }else{
-//            // 任务没逾期情况
-//            if(degree.equals("risky")){
-//                tbApiService.addProjectState(projectId,UtilMap.map("degree, content, name","normal","正常",stageName)); // 状态黄灯修改为绿灯
-//            }
-//        }
-    }
-
-    /**
-     * 判断给定的时间字符串表示的时间是否在未来(即是否大于当前时间)。
-     *
-     * @param timeStr 时间字符串,格式为 "2024-09-11T10:00:00.000Z"
-     * @return 如果给定的时间在未来则返回 true,否则返回 false。
-     */
-    public static boolean isFuture(String timeStr) {
-        if(StringUtils.isBlank(timeStr)){
-            return true;
-        }
-        // 定义日期时间格式器
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-        try {
-            // 解析时间字符串为 LocalDateTime 对象
-            LocalDateTime localDateTime = LocalDateTime.parse(timeStr, formatter);
-            // 获取当前时间的 LocalDateTime 对象(以 UTC 时区)
-            LocalDateTime now = LocalDateTime.now(ZoneId.of("UTC"));
-            // 比较给定的时间与当前时间
-            return localDateTime.isAfter(now);
-        } catch (DateTimeParseException e) {
-            // 如果时间字符串格式不正确,则抛出异常
-            throw new IllegalArgumentException("Invalid date format: " + timeStr, e);
-        }
+//        thTbService.taskCancel(new JSONObject().fluentPut("taskId","66f66b7f790cb0ceca932b2d"));
     }
 
-    /***
-     * 获取项目状态
-     * @param projectId
-     * @return
-     */
-    public JSONObject getProjectState(String projectId) {
-        try {
-            JSONArray array=tbApiService.getProjectState(projectId);
-            if(array!=null&&array.size()>0){
-                return array.getJSONObject(0);
-            }
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-
-
 }