|
@@ -15,6 +15,7 @@ import com.malk.service.teambition.TBClient;
|
|
import com.malk.utils.UtilEnv;
|
|
import com.malk.utils.UtilEnv;
|
|
import com.malk.utils.UtilMap;
|
|
import com.malk.utils.UtilMap;
|
|
import com.malk.utils.UtilString;
|
|
import com.malk.utils.UtilString;
|
|
|
|
+import lombok.Synchronized;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -340,6 +341,7 @@ public class AWImplClient implements AWClint {
|
|
/**
|
|
/**
|
|
* 同步项目主数据 [兼容新增]
|
|
* 同步项目主数据 [兼容新增]
|
|
*/
|
|
*/
|
|
|
|
+ @Synchronized
|
|
@Override
|
|
@Override
|
|
public Map syncProject(String projectCode) {
|
|
public Map syncProject(String projectCode) {
|
|
|
|
|
|
@@ -430,6 +432,7 @@ public class AWImplClient implements AWClint {
|
|
* 通过模板创建项目 [ppExt: 过滤宜搭项目档案\TB项目, 避免重复创建, 若判定为更新下执行项目成员更新]
|
|
* 通过模板创建项目 [ppExt: 过滤宜搭项目档案\TB项目, 避免重复创建, 若判定为更新下执行项目成员更新]
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
|
|
+ @Synchronized
|
|
public void createProject(String projectCode, String templateId) {
|
|
public void createProject(String projectCode, String templateId) {
|
|
|
|
|
|
log.info("通过模板创建项目, {}, {}", projectCode, templateId);
|
|
log.info("通过模板创建项目, {}, {}", projectCode, templateId);
|
|
@@ -479,7 +482,7 @@ public class AWImplClient implements AWClint {
|
|
List<String> tRoleIds = UtilMap.getList(role, "roleIds");
|
|
List<String> tRoleIds = UtilMap.getList(role, "roleIds");
|
|
tRoleIds.remove(pmRoleId);
|
|
tRoleIds.remove(pmRoleId);
|
|
if (tRoleIds.isEmpty()) {
|
|
if (tRoleIds.isEmpty()) {
|
|
- tRoleIds.add(_getProjectRoleId(projectId, "项目成员"));
|
|
|
|
|
|
+ tRoleIds.add(_getProjectRoleId(projectId, "项目成员")); // 极少情况, 无需冗余
|
|
}
|
|
}
|
|
tbClient.updateProjectMember(Arrays.asList(UtilMap.getString(role, "userId")), tRoleIds, projectId);
|
|
tbClient.updateProjectMember(Arrays.asList(UtilMap.getString(role, "userId")), tRoleIds, projectId);
|
|
}
|
|
}
|
|
@@ -501,8 +504,9 @@ public class AWImplClient implements AWClint {
|
|
/**
|
|
/**
|
|
* 分配项目角色 prd 若是一人直接指定, 多人情况下忽略
|
|
* 分配项目角色 prd 若是一人直接指定, 多人情况下忽略
|
|
*/
|
|
*/
|
|
|
|
+ @Synchronized
|
|
@Override
|
|
@Override
|
|
- public void updateProjectRole(String projectId) {
|
|
|
|
|
|
+ public void updateProjectRole(String projectId, List<String> trNode) {
|
|
|
|
|
|
// 项目档案 [tb项目号查询, 避免模糊匹配]
|
|
// 项目档案 [tb项目号查询, 避免模糊匹配]
|
|
List<Map> pList = ydService.queryDataList_FormData(_matchFormUuid("PROJECT"), UtilMap.map("textField_lqxtykce", projectId));
|
|
List<Map> pList = ydService.queryDataList_FormData(_matchFormUuid("PROJECT"), UtilMap.map("textField_lqxtykce", projectId));
|
|
@@ -527,13 +531,25 @@ public class AWImplClient implements AWClint {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
List<Map> customfields = (List<Map>) task.get("customfields");
|
|
List<Map> customfields = (List<Map>) task.get("customfields");
|
|
|
|
+ // prd 按照tr节点分配成员, 若是含有全部则忽略
|
|
|
|
+ if (!trNode.contains("全部")) {
|
|
|
|
+ Optional optional2 = customField.stream().filter(item -> AWServer.TASK_STAGE.equals(item.get("name"))).findAny();
|
|
|
|
+ if (!optional2.isPresent()) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ String trName = TBConf.getTaskFieldValue_First(customfields, UtilMap.getString((Map) optional2.get(), "id"));
|
|
|
|
+ if (!trNode.contains(trName)) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ log.info("trName = {}", trName);
|
|
|
|
+ }
|
|
String roleName = TBConf.getTaskFieldValue_First(customfields, UtilMap.getString((Map) optional.get(), "id"));
|
|
String roleName = TBConf.getTaskFieldValue_First(customfields, UtilMap.getString((Map) optional.get(), "id"));
|
|
// 获取角色在项目主数据对应成员
|
|
// 获取角色在项目主数据对应成员
|
|
optional = rList.stream().filter(item -> roleName.equals(item.get("selectField_lqxu6bgf"))).findAny();
|
|
optional = rList.stream().filter(item -> roleName.equals(item.get("selectField_lqxu6bgf"))).findAny();
|
|
if (!optional.isPresent()) {
|
|
if (!optional.isPresent()) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- log.info("分配项目角色 taskId = {}, 资源名称 = {}, 项目角色 = {}", UtilMap.getString(task, "id"), roleName, optional.get());
|
|
|
|
|
|
+ log.info("分配项目角色 taskId = {}, trNode = {}, 资源名称 = {}, 项目角色 = {}", UtilMap.getString(task, "id"), roleName, optional.get());
|
|
List<String> roleIds = (List<String>) UtilMap.getList((Map) optional.get(), "employeeField_lqxtykch_id");
|
|
List<String> roleIds = (List<String>) UtilMap.getList((Map) optional.get(), "employeeField_lqxtykch_id");
|
|
if (roleIds.size() == 1) {
|
|
if (roleIds.size() == 1) {
|
|
String tbUserId = _convertUserId(roleIds.get(0), false);
|
|
String tbUserId = _convertUserId(roleIds.get(0), false);
|
|
@@ -549,6 +565,7 @@ public class AWImplClient implements AWClint {
|
|
/**
|
|
/**
|
|
* 项目迁移: 删除依赖项
|
|
* 项目迁移: 删除依赖项
|
|
*/
|
|
*/
|
|
|
|
+ @Synchronized
|
|
@Override
|
|
@Override
|
|
public void removeDependencies(String projectId, List<String> trNode) {
|
|
public void removeDependencies(String projectId, List<String> trNode) {
|
|
|
|
|
|
@@ -557,7 +574,7 @@ public class AWImplClient implements AWClint {
|
|
tbClient.queryProjectTaskList(projectId, null, taskList -> {
|
|
tbClient.queryProjectTaskList(projectId, null, taskList -> {
|
|
for (Map task : taskList) {
|
|
for (Map task : taskList) {
|
|
|
|
|
|
- Optional optional = customField.stream().filter(item -> "TR评审节点".equals(item.get("name"))).findAny();
|
|
|
|
|
|
+ Optional optional = customField.stream().filter(item -> AWServer.TASK_STAGE.equals(item.get("name"))).findAny();
|
|
if (!optional.isPresent()) {
|
|
if (!optional.isPresent()) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -603,6 +620,7 @@ public class AWImplClient implements AWClint {
|
|
/**
|
|
/**
|
|
* 同步预检项 [全量同步, 忽略任务号为空记录]
|
|
* 同步预检项 [全量同步, 忽略任务号为空记录]
|
|
*/
|
|
*/
|
|
|
|
+ @Synchronized
|
|
@Override
|
|
@Override
|
|
public void syncCheckList(YDParam srcParam, Map<String, ?> compIds, String taskCompId, String codeCompId, String checkType, String associationCompId) {
|
|
public void syncCheckList(YDParam srcParam, Map<String, ?> compIds, String taskCompId, String codeCompId, String checkType, String associationCompId) {
|
|
|
|
|
|
@@ -642,6 +660,10 @@ public class AWImplClient implements AWClint {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 同步预检项 [通用]
|
|
|
|
+ */
|
|
|
|
+ @Synchronized
|
|
@Override
|
|
@Override
|
|
public void syncCheckList(int type) {
|
|
public void syncCheckList(int type) {
|
|
|
|
|