|
@@ -2,6 +2,11 @@ package com.muzhi.tianhe.service.impl;
|
|
|
|
|
|
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.ThTbService;
|
|
|
import com.muzhi.tianhe.util.PublicUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -17,7 +22,10 @@ public class ThTbServiceImpl implements ThTbService {
|
|
|
|
|
|
@Autowired
|
|
|
private TbApiService tbApiService;
|
|
|
+ @Autowired
|
|
|
+ private YDClient ydClient;
|
|
|
|
|
|
+ private static String PROJECT_TAG_ID = "65b77b8f7bbdd92f48e6920d"; // 战略部分组
|
|
|
|
|
|
@Override
|
|
|
public void task(String taskId,String type,JSONObject data) {
|
|
@@ -421,4 +429,84 @@ public class ThTbServiceImpl implements ThTbService {
|
|
|
JSONArray value=((JSONObject) optional.get()).getJSONArray("value");
|
|
|
tbApiService.updateTaskCustomfield(task.getString("id"),projectCusts.get(custName),value);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void syncState() {
|
|
|
+ syncStateByTag(PROJECT_TAG_ID);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void syncStateByTag(String tagId){
|
|
|
+ JSONArray projectIds=tbApiService.getProjecTagUser(tagId);
|
|
|
+ for (int j = 0; j < projectIds.size(); j++) {
|
|
|
+ syncStateProject(projectIds.getString(j));
|
|
|
+ }
|
|
|
+ JSONArray array=tbApiService.getProjecGrouptTag(new JSONObject().fluentPut("parentProjectTagId",tagId));
|
|
|
+ for (int i = 0; i < array.size(); i++) {
|
|
|
+ syncStateByTag(array.getJSONObject(i).getString("id"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void syncStateProject(String projectId) {
|
|
|
+ // 同步项目下任务状态
|
|
|
+ JSONObject project = tbApiService.getProjectInfo(projectId).getJSONObject(0);;
|
|
|
+ Map<String,String> map=getProjectStateVule(projectId);
|
|
|
+ JSONArray array = getXiangmuRenwuLeixing(projectId);
|
|
|
+ for (int j = 0; j < array.size(); j++) {
|
|
|
+ if(array.getJSONObject(j).getString("name").contains("变更")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONArray tasks=tbApiService.getTasksByType(projectId,array.getJSONObject(j).getString("id"));
|
|
|
+ for (int i = 0; i < tasks.size(); i++) {
|
|
|
+ JSONObject task = tasks.getJSONObject(i);
|
|
|
+ log.info("同步任务,任务编号:[{}]进度:[{}/{}]",task.getString("id"),i+1,tasks.size());
|
|
|
+ ydClient.operateData(YDParam.builder().formUuid("FORM-59A439BCB8194F10B8C862C579F285F5KWG6")
|
|
|
+ .formDataJson(JSONObject.toJSONString(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"))
|
|
|
+ ,array.getJSONObject(j).getString("id"),array.getJSONObject(j).getString("name"))))
|
|
|
+ .searchCondition(JSONObject.toJSONString(Arrays.asList(new YDSearch("textField_m0rkuewb",task.getString("id"),"taskid", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ))))
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+// // 同步项目下自定义字段
|
|
|
+// List<JSONObject> projectCoutList=tbApiService.getProjectCustomfield(projectId).toJavaList(JSONObject.class);
|
|
|
+// projectCoutList.forEach(item -> {
|
|
|
+// ydClient.operateData(YDParam.builder().formUuid("FORM-C5B14D2EE4464AED835BA259388E829D9937")
|
|
|
+// .formDataJson(JSONObject.toJSONString(UtilMap.map("textField_m0vvz8ni, textField_m0vvz8nj, textField_m0vvz8nk, textField_m0vvz8nl"
|
|
|
+// ,projectId,item.getString("id"),item.getString("name"),item.getString("id"))))
|
|
|
+// .searchCondition(JSONObject.toJSONString(Arrays.asList(new YDSearch("textField_m0vvz8nl",item.getString("id"),"自定义字段编号", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ))))
|
|
|
+// .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+// });
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取项目任务类型
|
|
|
+ public JSONArray getXiangmuRenwuLeixing(String xmid){
|
|
|
+ JSONArray array=tbApiService.getTasksType(xmid);
|
|
|
+ JSONArray result = new JSONArray();
|
|
|
+ if (array != null){
|
|
|
+ for (int i = 0; i < array.size(); i++) {
|
|
|
+ Map map = new HashMap();
|
|
|
+ String name = array.getJSONObject(i).getString("name");
|
|
|
+ String id = array.getJSONObject(i).getString("id");
|
|
|
+ map.put("name",name);
|
|
|
+ map.put("id",id);
|
|
|
+ result.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String,String> getProjectStateVule(String projectId){
|
|
|
+ Map<String,String> result=new HashMap<>();
|
|
|
+ try {
|
|
|
+ JSONArray array = tbApiService.getProjectStateId(projectId,"","","");
|
|
|
+ List<JSONObject> list=array.toJavaList(JSONObject.class);
|
|
|
+ list.forEach(item -> result.put(item.getString("id"),item.getString("name")));
|
|
|
+ return result;
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|