|
@@ -12,9 +12,7 @@ import com.malk.server.teambition.TBConf;
|
|
|
import com.malk.service.aliwork.YDClient;
|
|
|
import com.malk.service.aliwork.YDService;
|
|
|
import com.malk.service.teambition.TBClient;
|
|
|
-import com.malk.utils.UtilEnv;
|
|
|
-import com.malk.utils.UtilMap;
|
|
|
-import com.malk.utils.UtilString;
|
|
|
+import com.malk.utils.*;
|
|
|
import lombok.Synchronized;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -40,7 +38,7 @@ public class AWImplClient implements AWClint {
|
|
|
// 项目主数据表
|
|
|
String _matchFormUuid(String code) {
|
|
|
Map<String, String> formUuid = UtilMap.empty();
|
|
|
- if (UtilEnv.getActiveProfile().equals(UtilEnv.ENV_PROD)) {
|
|
|
+ if (true || UtilEnv.getActiveProfile().equals(UtilEnv.ENV_PROD)) {
|
|
|
formUuid.put("REVIEW", "FORM-812FD46AF391449A8F206EDB3221B38840UQ"); // 交付物审批记录
|
|
|
formUuid.put("REVIEW_PROCESS", "TPROC--RJC66SC1NEFHXJ0H770K0CF4WN1K21HQ706RL5"); // 交付物审批记录
|
|
|
formUuid.put("PROJECT", "FORM-141E21DF183846028E21727CE43CD1C75CLZ"); // 项目主数据
|
|
@@ -48,6 +46,7 @@ public class AWImplClient implements AWClint {
|
|
|
formUuid.put("CHECK", "FORM-1A5D4D7FBF88409B956EBE51F9342A6BKOLP"); // 预检项
|
|
|
formUuid.put("RECORD", "FORM-6E2C0D1197264B8AA23EB3FECAE7344B00BN"); // 预检项记录
|
|
|
formUuid.put("ROLE", "FORM-3C7396A12ADB48A8833EBD90089C93833R21"); // 项目角色
|
|
|
+ formUuid.put("CRM_LOG", "FORM-16DD578308E64763AE1539D8176CCCD0GX6F"); // crm推送日志
|
|
|
formUuid.put("DOMAIN", "https://yida.awinic.com/"); // 宜搭域名
|
|
|
} else {
|
|
|
// [ fixme: 测试环境添加主数据, 匹配不同架构下企业成员 ]
|
|
@@ -58,6 +57,7 @@ public class AWImplClient implements AWClint {
|
|
|
formUuid.put("CHECK", "FORM-E6CB042D7929448888AE5E2B27631E57IVPM");
|
|
|
formUuid.put("RECORD", "FORM-7B63BB056145452F8BC0A2C52492DE00QVBH");
|
|
|
formUuid.put("ROLE", "FORM-5BE21392886E46DF955D1EBC100ADA429NON");
|
|
|
+ formUuid.put("CRM_LOG", "FORM-7F40E85D4FA8487C8E00C9156B76A953CBMG");
|
|
|
formUuid.put("DOMAIN", "https://kabom7.aliwork.com/");
|
|
|
}
|
|
|
return formUuid.get(code);
|
|
@@ -111,12 +111,13 @@ public class AWImplClient implements AWClint {
|
|
|
}
|
|
|
/// 发起评审
|
|
|
if (StringUtils.isBlank(result)) {
|
|
|
-
|
|
|
List<Map> roles = (List<Map>) rProject.get("tableField_lqxtykcf");
|
|
|
- Map formData = UtilMap.map("selectField_lqxuswzd, textField_lrncs2fu, radioField_lrnddfq6", tCode, pCode, "启用");
|
|
|
+ Map formData = UtilMap.map("selectField_lqxuswzd, textField_lrncs2fu", tCode, pCode);
|
|
|
formData.put("attachmentField_lqxtebtq", _getDocs(taskData));
|
|
|
- formData.put("selectField_lqxuswze", UtilMap.getString(rProject, "textField_lrj7vnxb")); // 项目编号
|
|
|
- formData.put("textField_lqxuc9m4", UtilMap.getString(rProject, "textField_lqxtykcd")); // 项目名称
|
|
|
+ formData.put("selectField_lqxuswze", UtilMap.getString(rProject, "textField_lrj7vnxb")); // 项目编号
|
|
|
+ formData.put("textField_lqxuc9m4", UtilMap.getString(rProject, "textareaField_lrj7vnxl")); // 项目描述
|
|
|
+ formData.put("employeeField_ltzn872j", UtilMap.getString(rProject, "employeeField_ltzn872j_id")); // 项目经理 0402 控制矩阵角色为空, 流转到PM
|
|
|
+ formData.put("textField_ltwcq7s6", UtilMap.getString(rProject, "textField_ltwcq7s6")); // 项目类型
|
|
|
// 匹配任务编码与项目角色
|
|
|
List<Map<String, String>> compIds = Arrays.asList( // 任务表角色, 交付物评审表: 角色, 审批人
|
|
|
UtilMap.map("tsRole, prRole, prEmp", "multiSelectField_lrokzlo7, multiSelectField_lrokzlo7, employeeField_lqxtebtw"),
|
|
@@ -149,6 +150,7 @@ public class AWImplClient implements AWClint {
|
|
|
// 组装数据
|
|
|
Map<String, String> extra = (Map) tbClient.idMapQuery(creatorId, "dingTalk-user", ddConf.getCorpId()).get(0).get("extra");
|
|
|
UtilMap.putAll(formData, UtilMap.map("textField_lr3dlwsa, textField_lr3er4qb", taskId, creatorId));
|
|
|
+ formData.put("employeeField_lui5fu7z", Arrays.asList(extra.get("userId"))); // 0402 指定发起人, 用于结构化数据子流程发起人
|
|
|
String instanceId = (String) ydClient.operateData(YDParam.builder()
|
|
|
.formUuid(_matchFormUuid("REVIEW"))
|
|
|
.processCode(_matchFormUuid("REVIEW_PROCESS"))
|
|
@@ -182,27 +184,34 @@ public class AWImplClient implements AWClint {
|
|
|
private DDConf ddConf;
|
|
|
|
|
|
// 获取任务详情 fixme 提取到 tbservice
|
|
|
- private Map _getTaskFieldMap(String taskId, String... fieldNames) {
|
|
|
-
|
|
|
- Map rTask = tbClient.queryTaskDetail(taskId, null, null).get(0);
|
|
|
- List<Map> customfields = UtilMap.getList(rTask, "customfields");
|
|
|
-
|
|
|
- // 任务编码字段ID
|
|
|
- List<Map> customField = tbClient.queryProjectCustomField(String.valueOf(rTask.get("projectId")), null);
|
|
|
+ private Map<String, String> _getTaskFieldMap(Map task, List<Map> projectCustomField, String... fieldNames) {
|
|
|
+ return __getTaskMap(task, projectCustomField, fieldNames);
|
|
|
+ }
|
|
|
|
|
|
- // 组装任务数据
|
|
|
- Map result = UtilMap.map("task", rTask);
|
|
|
+ // 组装任务数据
|
|
|
+ private Map __getTaskMap(Map task, List<Map> projectCustomField, String... fieldNames) {
|
|
|
+ Map result = UtilMap.map("task", task);
|
|
|
+ List<Map> taskCustomField = (List<Map>) task.get("customfields");
|
|
|
for (String filed : fieldNames) {
|
|
|
- Optional optional = customField.stream().filter(item -> filed.equals(item.get("name"))).findAny();
|
|
|
+ Optional optional = projectCustomField.stream().filter(item -> filed.equals(item.get("name"))).findAny();
|
|
|
if (optional.isPresent()) {
|
|
|
Map map = (Map) optional.get();
|
|
|
- result.put(filed, TBConf.getTaskFieldValue_First(customfields, String.valueOf(map.get("id"))));
|
|
|
+ result.put(filed, TBConf.getTaskFieldValue_First(taskCustomField, String.valueOf(map.get("id"))));
|
|
|
result.put(filed + "_id", map.get("id")); // ppExt: 返回字段ID
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ // 获取任务详情 fixme 提取到 tbservice
|
|
|
+ private Map _getTaskFieldMap(String taskId, String... fieldNames) {
|
|
|
+ // 查询任务详情
|
|
|
+ Map rTask = tbClient.queryTaskDetail(taskId, null, null).get(0);
|
|
|
+ // 查询项目任务ID
|
|
|
+ List<Map> customField = tbClient.queryProjectCustomField(String.valueOf(rTask.get("projectId")), null);
|
|
|
+ return __getTaskMap(rTask, customField, fieldNames);
|
|
|
+ }
|
|
|
+
|
|
|
// 匹配工作流名称, 获取ID
|
|
|
@Deprecated
|
|
|
String _getWorkFlowStatus(String projectId, String workFlowStatusName) {
|
|
@@ -239,7 +248,6 @@ public class AWImplClient implements AWClint {
|
|
|
List<Map> _getDocs(Map taskData) {
|
|
|
Map rTask = UtilMap.getMap(taskData, "task");
|
|
|
List<Map> customfields = UtilMap.getList(rTask, "customfields");
|
|
|
-
|
|
|
String deliverable = String.valueOf(taskData.get(AWServer.TASK_APPROVE_ATTACHMENT + "_id")); // 交付物任务字段ID
|
|
|
List<Map> attachments = TBConf.getTaskFieldValue(customfields, deliverable).stream().map(item -> {
|
|
|
Map link = (Map) JSON.parse(String.valueOf(item.get("metaString")));
|
|
@@ -397,7 +405,8 @@ public class AWImplClient implements AWClint {
|
|
|
Object rootItems = baseFormData.get(rootFormData.get("textField_lr7bgi76"));
|
|
|
Object projectRoot = rootFormData.get("textField_lqxu439g");
|
|
|
if (rootItems != null && projectRoot != null) {
|
|
|
- details.add(UtilMap.map("employeeField_lqxtykch, selectField_lqxu6bgf", rootItems, projectRoot));
|
|
|
+ // prd 提交代表标识, 用于同步项目角色
|
|
|
+ details.add(UtilMap.map("employeeField_lqxtykch, selectField_lqxu6bgf, radioField_lu8li5ie", rootItems, projectRoot, rootFormData.get("radioField_lu8li5ie")));
|
|
|
// prd 添加项目经理, 用于数据权限控制
|
|
|
if (AWServer.PROJECT_PM_NAME.equals(projectRoot)) {
|
|
|
formData.put("employeeField_ltzn872j", rootItems);
|
|
@@ -504,7 +513,7 @@ public class AWImplClient implements AWClint {
|
|
|
pmUserId.addAll(userIds);
|
|
|
}
|
|
|
// prd 项目各代表, 可独立N/A任务, 添加角色控制权限
|
|
|
- if (roleName.endsWith("代表")) {
|
|
|
+ if ("是".equals(row.get("radioField_lu8li5ie"))) {
|
|
|
representativeIds.addAll(userIds);
|
|
|
}
|
|
|
roleIds.addAll(userIds);
|
|
@@ -529,6 +538,8 @@ public class AWImplClient implements AWClint {
|
|
|
if (!pmUserId.isEmpty()) {
|
|
|
tbClient.updateProjectMember(_convertUserId(pmUserId, false), Arrays.asList(pmRoleId), projectId);
|
|
|
}
|
|
|
+ // prd 人员变更, 自动同步更新执行人: 仅触发存在执行人 & 未完成场景
|
|
|
+ updateProjectRole(projectId, Arrays.asList("全部", "自动更新"));
|
|
|
// 同步项目分组 [prd 主数据建立产品与分组对照表,绑定末级分类接口,若未匹配则不添加]
|
|
|
String groupName = UtilMap.getString(formData, "textField_ltsdsti6");
|
|
|
if (StringUtils.isNotBlank(groupName)) {
|
|
@@ -598,6 +609,12 @@ public class AWImplClient implements AWClint {
|
|
|
}
|
|
|
log.info("tr节点控制, {}, {}", trName, trNode);
|
|
|
}
|
|
|
+ // prd 人员变更, 自动同步更新执行人: 仅触发存在执行人 & 未完成场景
|
|
|
+ if (trNode.contains("自动更新")) {
|
|
|
+ if (StringUtils.isBlank(UtilMap.getString(task, "executorId"))) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
String roleName = TBConf.getTaskFieldValue_First(customfields, UtilMap.getString((Map) optional.get(), "id"));
|
|
|
// 获取角色在项目主数据对应成员
|
|
|
optional = rList.stream().filter(item -> roleName.equals(item.get("selectField_lqxu6bgf"))).findAny();
|
|
@@ -673,6 +690,152 @@ public class AWImplClient implements AWClint {
|
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步crm基线
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void syncBaseLineForCRM(String projectId) {
|
|
|
+ String C_TR5_03_13 = "TR5-03-13";
|
|
|
+ String C_TR6_01_11 = "TR6-01-11";
|
|
|
+
|
|
|
+ // 7. 产品型号 (Name) : 以上计划时间对应的产品型号 / 取产品型号字段
|
|
|
+ List<Map> customField = tbClient.queryProjectCustomField(projectId, null);
|
|
|
+
|
|
|
+ // 基线同步需求
|
|
|
+ List<Map> baseLines = tbClient.queryGanttBaselineList(projectId, null).stream()
|
|
|
+ .filter(item -> UtilMap.getString(item, "title").toUpperCase().contains("PDCP")).collect(Collectors.toList());
|
|
|
+ log.info("PDCP基线, {}, {}", projectId, baseLines.size());
|
|
|
+ List<Map> baseLineTaskList = new ArrayList();
|
|
|
+ if (baseLines.size() > 0) {
|
|
|
+ // prd 若存在多个同名, 取最新基线 [返回值创建时间升序]
|
|
|
+ tbClient.queryGanttBaselineTask(UtilMap.getString(baseLines.get(baseLines.size() - 1), "id"), null, taskList -> {
|
|
|
+ baseLineTaskList.addAll(taskList);
|
|
|
+ return true;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ log.info("基线任务, {}", baseLineTaskList.size());
|
|
|
+
|
|
|
+ // 最新同步需求
|
|
|
+ Map<String, String> proData = getProjectCFID(projectId, Arrays.asList(AWServer.TASK_CODE, AWServer.TASK_PRODUCT));
|
|
|
+ String tql = "cf:" + proData.get(AWServer.TASK_CODE) + " = " + C_TR5_03_13 + " AND (cf:" + proData.get(AWServer.TASK_PRODUCT) + " != null)" + " ORDER BY startDate DESC";
|
|
|
+ List<Map> taskList = tbClient.queryProjectTaskList(projectId, UtilMap.map("q", tql), null);
|
|
|
+ log.info("项目计划: {}, {}", C_TR5_03_13, taskList.size());
|
|
|
+
|
|
|
+ List<Map> dataList = new ArrayList<>();
|
|
|
+ for (Map task : taskList) {
|
|
|
+ String name = _getTaskFieldMap(task, customField, AWServer.TASK_PRODUCT).get(AWServer.TASK_PRODUCT);
|
|
|
+ // 多料号兼容
|
|
|
+ if (dataList.stream().filter(item -> name.equals(item.get("Name"))).findAny().isPresent()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Map tData = UtilMap.map("Name", name);
|
|
|
+ // 2. 预计α推广 (AlphaDate): 最新项目计划(非基线)里的ADCPα任务对应的计划完成时间 / TR5-03-13任务号 取最新版本
|
|
|
+ String date = UtilMap.getString(task, "dueDate");
|
|
|
+ if (UtilString.isNotBlankCompatNull(date)) {
|
|
|
+ tData.put("AlphaDate", UtilDateTime.formatDate(UtilDateTime.parse(date, UtilDateTime.DATE_MSEL_ISO)));
|
|
|
+ }
|
|
|
+ // 3. α推广 (AlphaDate2): 【ADCPα】对应的实际完成时间 / TR5-03-13任务号 取最新版本
|
|
|
+ date = UtilMap.getString(task, "accomplishTime");
|
|
|
+ if (UtilString.isNotBlankCompatNull(date)) {
|
|
|
+ tData.put("AlphaDate2", UtilDateTime.formatDate(UtilDateTime.parse(date, UtilDateTime.DATE_MSEL_ISO)));
|
|
|
+ }
|
|
|
+ // 1. α推广基线 (AlphaBaseline): PDCP basseline 基线下的ADCPα任务的计划完成时间 / PDCP basseline 基线 TR5-03-13任务号
|
|
|
+ Optional optional = baseLineTaskList.stream().filter(item -> task.get("id").equals(item.get("id"))).findAny();
|
|
|
+ if (optional.isPresent()) {
|
|
|
+ date = UtilMap.getString((Map) optional.get(), "planDueDate");
|
|
|
+ if (StringUtils.isNotBlank(date)) {
|
|
|
+ tData.put("AlphaBaseline", UtilDateTime.formatDate(UtilDateTime.parse(date, UtilDateTime.DATE_MSEL_ISO)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (tData.keySet().size() >= 2) {
|
|
|
+ dataList.add(tData);
|
|
|
+ _pushCRM(projectId, tData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ tql = "cf:" + proData.get(AWServer.TASK_CODE) + " = " + C_TR6_01_11 + " AND (cf:" + proData.get(AWServer.TASK_PRODUCT) + " != null)" + " ORDER BY startDate ASC";
|
|
|
+ taskList = tbClient.queryProjectTaskList(projectId, UtilMap.map("q", tql), null);
|
|
|
+ log.info("项目计划: {}, {}", C_TR6_01_11, taskList.size());
|
|
|
+
|
|
|
+ dataList = new ArrayList<>();
|
|
|
+ for (Map task : taskList) {
|
|
|
+ String name = _getTaskFieldMap(task, customField, AWServer.TASK_PRODUCT).get(AWServer.TASK_PRODUCT);
|
|
|
+ // 多料号兼容
|
|
|
+ if (dataList.stream().filter(item -> name.equals(item.get("Name"))).findAny().isPresent()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Map tData = UtilMap.map("Name", name);
|
|
|
+ // 5. 预计正式发布 (AgentSampleDate): 最新项目计划(非基线),取最早那个产品版本的计划完成时间 / TR6-01-11任务号 最早版本
|
|
|
+ String date = UtilMap.getString(task, "dueDate");
|
|
|
+ if (UtilString.isNotBlankCompatNull(date)) {
|
|
|
+ tData.put("AgentSampleDate", UtilDateTime.formatDate(UtilDateTime.parse(date, UtilDateTime.DATE_MSEL_ISO)));
|
|
|
+ }
|
|
|
+ // 6. 正式发布 (ProductSendDate): 【ADCP】对应的取最早那个产品版本的实际完成时间 / TR6-01-11任务号 最早版本
|
|
|
+ date = UtilMap.getString(task, "accomplishTime");
|
|
|
+ if (UtilString.isNotBlankCompatNull(date)) {
|
|
|
+ tData.put("ProductSendDate", UtilDateTime.formatDate(UtilDateTime.parse(date, UtilDateTime.DATE_MSEL_ISO)));
|
|
|
+ }
|
|
|
+ // 4. 正式发布基线 (ReleaseBaseline): 取PDCPbasseline基线里的ADCP的计划完成时间,取最早那个产品版本的计划完成时间 / PDCP basseline 基线 TR6-01-11任务号
|
|
|
+ Optional optional = baseLineTaskList.stream().filter(item -> task.get("id").equals(item.get("id"))).findAny();
|
|
|
+ if (optional.isPresent()) {
|
|
|
+ date = UtilMap.getString((Map) optional.get(), "planDueDate");
|
|
|
+ if (StringUtils.isNotBlank(date)) {
|
|
|
+ tData.put("ReleaseBaseline", UtilDateTime.formatDate(UtilDateTime.parse(date, UtilDateTime.DATE_MSEL_ISO)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (tData.keySet().size() >= 2) {
|
|
|
+ dataList.add(tData);
|
|
|
+ _pushCRM(projectId, tData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 推送crm: prd 单次推送必须为相同料号
|
|
|
+ void _pushCRM(String projectId, Map record) {
|
|
|
+ log.info("推送crm, {}", record);
|
|
|
+ Map param = UtilMap.map("username, password, client_id, client_secret, grant_type", "interface@awinic.com.cn.uat", "welcome12", "3MVG959Nd8JMmavT2IGqAtf_hIbxepsElGbOpno6AO8KdQJSpSNqY9bnLRU2exuAEh3qIXb1oTn98S9h0WWZk", "3C9FC7427866D69586964F65A16D288EBBB1544335DD9FF3A03DE21DF14A7C6A", "password");
|
|
|
+ String rsp = UtilHttp.doPost("https://test.salesforce.com/services/oauth2/token", null, param, UtilMap.empty());
|
|
|
+ Map result = (Map) JSON.parse(rsp);
|
|
|
+ Map header = UtilMap.map("Authorization", "OAuth " + result.get("access_token"));
|
|
|
+ rsp = UtilHttp.doPost(UtilMap.getString(result, "instance_url") + "/services/apexrest/TBProductStageTimeRest", header, null, Arrays.asList(record), null);
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid(_matchFormUuid("CRM_LOG"))
|
|
|
+ .formDataJson(JSON.toJSONString(UtilMap.map("textareaField_lu8kinep, textareaField_lu8kineu, textField_lu8kinew", Arrays.asList(record), rsp, projectId)))
|
|
|
+ .build(), YDConf.FORM_OPERATION.create);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 全量同步crm基线
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void syncBaseLineForCRM() {
|
|
|
+
|
|
|
+ // prd 同步CRM: 项目状态为执行 & TB项目号不为空
|
|
|
+ YDParam ydParam = YDParam.builder()
|
|
|
+ .formUuid(_matchFormUuid("PROJECT"))
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_llouhiyf", "执行")))
|
|
|
+ .build();
|
|
|
+ List<Map> proList = ydService.queryFormData_all(ydParam);
|
|
|
+ for (Map pro : proList) {
|
|
|
+ String projectId = UtilMap.getString(pro, "textField_lqxtykce");
|
|
|
+ if (StringUtils.isBlank(projectId)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ syncBaseLineForCRM(projectId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取项目自定义字段ID, 格式 { 名称: id } fixme 提取
|
|
|
+ Map<String, String> getProjectCFID(String projectId, List<String> names) {
|
|
|
+ List<Map> customField = tbClient.queryProjectCustomField(projectId, null);
|
|
|
+ List tList = customField.stream().filter(item -> names.contains(item.get("name"))).collect(Collectors.toList());
|
|
|
+ return (Map<String, String>) tList.stream().reduce(UtilMap.empty(), (acc, cur) -> {
|
|
|
+ ((Map) acc).put(((Map) cur).get("name"), ((Map) cur).get("id"));
|
|
|
+ return acc;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 同步预检项 [全量同步, 忽略任务号为空记录]
|
|
|
*/
|
|
@@ -712,9 +875,20 @@ public class AWImplClient implements AWClint {
|
|
|
if (optional.isPresent()) {
|
|
|
ydParam.setFormInstanceId(UtilMap.getString((Map) optional.get(), "formInstanceId"));
|
|
|
operate = YDConf.FORM_OPERATION.update;
|
|
|
+ // prd 0402 兼容删除场景, 标记状态为停用, 不做实际删除
|
|
|
+ ((Map) optional.get()).put("status", true);
|
|
|
}
|
|
|
ydClient.operateData(ydParam, operate);
|
|
|
}
|
|
|
+
|
|
|
+ List<Map> dataList = curList.stream().filter(item -> "启用".equals(item.get("radioField_lrnddfq6")) && !item.containsKey("status")).collect(Collectors.toList());
|
|
|
+ log.info(" 兼容删除场景, 标记状态为停用, {}", dataList.size());
|
|
|
+ dataList.forEach(item -> {
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(UtilMap.getString(item, "formInstanceId"))
|
|
|
+ .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_lrnddfq6", "停用")))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -763,9 +937,11 @@ public class AWImplClient implements AWClint {
|
|
|
log.info("同步预检项 ##, {}", type);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public void test() {
|
|
|
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|