|
@@ -602,7 +602,10 @@ public class AWImplClient implements AWClint {
|
|
|
@Synchronized
|
|
|
@Override
|
|
|
public Map syncProject(String projectCode) {
|
|
|
+ return syncProject(projectCode,"");
|
|
|
+ }
|
|
|
|
|
|
+ public Map syncProject(String projectCode,String tbProjectId) {
|
|
|
// 新增场景下, 提供实例ID回写TB项目编号
|
|
|
Map formData = null;
|
|
|
|
|
@@ -683,9 +686,16 @@ public class AWImplClient implements AWClint {
|
|
|
}
|
|
|
}
|
|
|
formData.put("tableField_lqxtykcf", details);
|
|
|
+ if(tbProjectId!=null&&!tbProjectId.isEmpty()){
|
|
|
+ formData.put("textField_lqxtykce", tbProjectId);
|
|
|
+ formData.put("textField_m9mjecgo", tbProjectId);
|
|
|
+ formData.put("radioField_m9mjecgj","是");
|
|
|
+ }else{
|
|
|
+ formData.put("radioField_m9mjecgj","否");
|
|
|
+ }
|
|
|
// 通过项目号获取项目是否已存在
|
|
|
- List<Map> projectMaps = ydService.queryDataList_FormData(_matchFormUuid("PROJECT"), UtilMap.map("textField_lrj7vnxb", baseFormData.get("textField_ljcbhzhi")));
|
|
|
- projectMaps = projectMaps.stream().filter(sub -> baseFormData.get("textField_ljcbhzhi").equals(sub.get("textField_lrj7vnxb"))).collect(Collectors.toList());
|
|
|
+ List<Map> projectMaps = ydService.queryDataList_FormData(_matchFormUuid("PROJECT"), UtilMap.map("textField_lrj7vnxb", baseFormData.get("serialNumberField_m7k86t51")));
|
|
|
+ projectMaps = projectMaps.stream().filter(sub -> baseFormData.get("serialNumberField_m7k86t51").equals(sub.get("textField_lrj7vnxb"))).collect(Collectors.toList());
|
|
|
YDParam ydParam2 = YDParam.builder()
|
|
|
.formUuid(_matchFormUuid("PROJECT"))
|
|
|
.formDataJson(JSON.toJSONString(formData))
|
|
@@ -738,11 +748,11 @@ public class AWImplClient implements AWClint {
|
|
|
*/
|
|
|
@Override
|
|
|
@Synchronized
|
|
|
- public void createProject(String projectCode, String templateId) {
|
|
|
+ public void createProject(String projectCode, String templateId,String tbProjectId) {
|
|
|
|
|
|
log.info("通过模板创建项目, {}, {}", projectCode, templateId);
|
|
|
// 虽然先创建TB, 可以一次性同步项目数据, 但避免执行异常, 因此成功创建TB项目再回写
|
|
|
- Map formData = syncProject(projectCode);
|
|
|
+ Map formData = syncProject(projectCode,tbProjectId);
|
|
|
String projectId = UtilMap.getString(formData, "textField_lqxtykce");
|
|
|
log.info("项目主数据, {}, {}", projectId, formData);
|
|
|
boolean isCreate = StringUtils.isBlank(projectId);
|
|
@@ -903,13 +913,14 @@ public class AWImplClient implements AWClint {
|
|
|
McException.assertAccessException(projectId==null||projectId.isEmpty(), "未匹配到TB项目编号");
|
|
|
String taskType=_getTaskType(projectId,"风险");
|
|
|
List<String> roleIds = (List<String>) UtilMap.getList(formData, "employeeField_m8fo7mpb_id");
|
|
|
- String taskId=saveTask(projectId,taskType,UtilMap.getString(formData,"textareaField_m9jmwi5l"),UtilMap.getString(formData,"textareaField_m9jmwi5q"),roleIds,"");
|
|
|
+ String taskId=saveTask(projectId,taskType,UtilMap.getString(formData,"textareaField_m9jmwi5l"),UtilMap.getString(formData,"textareaField_m9jmwi5q"),roleIds,"",null,null);
|
|
|
String url="https://qekxvk.aliwork.com/APP_UUFCJROTRU87EZ0XWPV6/processDetail?formUuid=FORM-ED6CACB45BB04C41BCD0962F54F7010FQQYG&procInsId="+formInstId;
|
|
|
_updateApproveField(taskId, new ArrayList<>(), url, "需求变更流程", "完成", AWServer.TASK_APPROVE_LINK);
|
|
|
List<Map> table=UtilMap.getList(formData,"tableField_m8fo7mph");
|
|
|
for (Map map:table){
|
|
|
- List<String> userIds = (List<String>) UtilMap.getList(formData, "employeeField_m8zm84pm_id");
|
|
|
- saveTask(projectId,taskType,UtilMap.getString(map,"textField_m8fo7mpi"),UtilMap.getString(formData,"textField_m8fo7mpj"),userIds,taskId);
|
|
|
+ List<String> userIds = (List<String>) UtilMap.getList(map, "employeeField_m8zm84pm_id");
|
|
|
+ saveTask(projectId,taskType,UtilMap.getString(map,"textField_m8fo7mpi"),UtilMap.getString(map,"textField_m8fo7mpj"),userIds,taskId,
|
|
|
+ UtilMap.getLong(map,"dateField_m8fo7mpo"),UtilMap.getString(map,"textField_m8fo7mpl"));
|
|
|
}
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.appType("APP_UUFCJROTRU87EZ0XWPV6")
|
|
@@ -920,7 +931,62 @@ public class AWImplClient implements AWClint {
|
|
|
log.info("TB任务编号更新, {}, {}", formInstId, taskId);
|
|
|
}
|
|
|
|
|
|
- private String saveTask(String projectId,String taskType,String content,String note,List<String> roleIds,String fId){
|
|
|
+ @Override
|
|
|
+ public void updateLcb(String projectCode) {
|
|
|
+ YDParam ydParam = YDParam.builder()
|
|
|
+ .appType("APP_CNQYZE26WA8UMSJJ188R")
|
|
|
+ .systemToken("0O966HC1D4CQO63Q8IL1L5W6DV7D3UMXUHI3MPA")
|
|
|
+ .formUuid("FORM-C34B18D925714348AED23A453A845D68VSPK")
|
|
|
+ .build();
|
|
|
+ if (StringUtils.isNotBlank(projectCode)) {
|
|
|
+ ydParam.setSearchFieldJson(JSON.toJSONString(UtilMap.map("textField_m86rdjn0", projectCode)));
|
|
|
+ }
|
|
|
+ List<Map> mapBaseList = ydService.queryFormData_all(ydParam);
|
|
|
+ if (StringUtils.isNotBlank(projectCode)) {
|
|
|
+ mapBaseList = mapBaseList.stream().filter(item -> projectCode.equals(item.get("textField_m86rdjn0"))).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ log.info("项目里程碑数据, {}", mapBaseList.size());
|
|
|
+ McException.assertAccessException(mapBaseList.isEmpty(), "未匹配到项目主数据");
|
|
|
+ Map baseMap=mapBaseList.get(0);
|
|
|
+ List<Map> pList = ydService.queryDataList_FormData("FORM-87750D9F02094BCA88FAD8166F0B9AA7VJMG", UtilMap.map("textField_lrj7vnxb", projectCode)); // 先您过目编号匹配
|
|
|
+ McException.assertAccessException(pList.isEmpty(), "未匹配到项目主数据");
|
|
|
+ String projectId=UtilMap.getString(pList.get(0), "textField_lqxtykce"); // TB项目编号
|
|
|
+ // 搜索项目里程碑任务类型的id
|
|
|
+ String taskTypeId=_getTaskType(projectId,"里程碑");
|
|
|
+ // 搜索里程碑任务
|
|
|
+ List<Map> taskList = tbClient.queryProjectTaskList(projectId, UtilMap.put(UtilMap.empty(), "q", "scenarioId = "+taskTypeId), null);
|
|
|
+ // 修改截至时间
|
|
|
+ for (Map task: taskList) {
|
|
|
+ log.info("task:{}",task);
|
|
|
+ String name=UtilMap.getString(task,"content");
|
|
|
+ if(!LCB_YDFIELID.containsKey(name)) continue;
|
|
|
+ String timeStm=UtilMap.getString(baseMap,LCB_YDFIELID.get(name));
|
|
|
+ if(timeStm==null||timeStm.isEmpty()) continue;
|
|
|
+ try {
|
|
|
+ tbClient.updateTaskDueDate(UtilMap.getString(task,"id"),UtilDateTime.formatLocalDateTime(UtilDateTime.getLocalDateTimeFromTimestamp(Long.valueOf(timeStm))),tbConf.getOperatorId());
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tbClient.createGanttBaseline(projectId,UtilMap.getString(baseMap,"textField_m9s9wnfv"),null);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static Map<String,String> LCB_YDFIELID;
|
|
|
+ static {
|
|
|
+ LCB_YDFIELID=new HashMap<>();
|
|
|
+ LCB_YDFIELID.put("TR1","dateField_m86pxo3y");
|
|
|
+ LCB_YDFIELID.put("CDCP","dateField_m86pxo45");
|
|
|
+ LCB_YDFIELID.put("TR2","dateField_m86pxo3z");
|
|
|
+ LCB_YDFIELID.put("TR3","dateField_m86pxo40");
|
|
|
+ LCB_YDFIELID.put("PDCP","dateField_m86pxo44");
|
|
|
+ LCB_YDFIELID.put("TR4","dateField_m86pxo4c");
|
|
|
+ LCB_YDFIELID.put("TR4A","dateField_m86pxo4b");
|
|
|
+ LCB_YDFIELID.put("TR5","dateField_m86pxo4a");
|
|
|
+ LCB_YDFIELID.put("TR6","dateField_m86pxo49");
|
|
|
+ LCB_YDFIELID.put("ADCP","dateField_m86pxo46");
|
|
|
+ }
|
|
|
+
|
|
|
+ private String saveTask(String projectId,String taskType,String content,String note,List<String> roleIds,String fId,Long dueDate,String effect){
|
|
|
Map data=new HashMap();
|
|
|
data.put("projectId",projectId);
|
|
|
data.put("content",content);
|
|
@@ -932,10 +998,17 @@ public class AWImplClient implements AWClint {
|
|
|
data.put("note",note);// 备注
|
|
|
data.put("scenariofieldconfigId",taskType);// 任务类型
|
|
|
data.put("parentTaskId",fId);
|
|
|
+ if(dueDate!=null){
|
|
|
+ data.put("dueDate",UtilDateTime.formatLocalDateTime(UtilDateTime.getLocalDateTimeFromTimestamp(dueDate)));
|
|
|
+ }
|
|
|
Map taskMap=tbClient.createTask(tbConf.getOperatorId(),data);
|
|
|
String taskId=UtilMap.getString(taskMap,"taskId");
|
|
|
Map body = TBConf.assembleCustomFieldName("类型", "风险");
|
|
|
tbClient.updateTaskCustomField(taskId, tbConf.getOperatorId(), body);
|
|
|
+ if(effect!=null&&!effect.isEmpty()){
|
|
|
+ Map body2 = TBConf.assembleCustomFieldName("预计实现效果", effect);
|
|
|
+ tbClient.updateTaskCustomField(taskId, tbConf.getOperatorId(), body2);
|
|
|
+ }
|
|
|
return taskId;
|
|
|
}
|
|
|
|