diff --git a/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java index 3b39b91..1806d52 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/process/service/impl/BusinessProcessServiceImpl.java @@ -170,6 +170,7 @@ public class BusinessProcessServiceImpl extends ServiceImpl currentNodes = this.getCurrentNodes(processInstanceId, loginName); this.syncCustomerArchiveCurrentNode(param.getFormInstanceId(), currentNodes); + this.getProcessInfo(processInstanceId, loginName); return processInstanceId; } diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchivePublicController.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchivePublicController.java index 0308ab4..c339692 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchivePublicController.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/controller/CustomerArchivePublicController.java @@ -109,12 +109,12 @@ public class CustomerArchivePublicController { log.warn("客商公开页流程消息未找到 processId,跳过查询当前节点"); return R.success("ok"); } + String customerIdText = firstText(asMap(body == null ? null : body.get("formData")), "id"); try { FR result = businessProcessClient.getCurrentNodes(processId, loginName); Object nodeData = result == null ? null : result.getData(); log.info("客商公开页流程消息当前节点详情 processId={} loginName={} result={}", processId, loginName, JSON.toJSONString(nodeData)); - String customerIdText = firstText(asMap(body == null ? null : body.get("formData")), "id"); if (StringUtil.isBlank(customerIdText)) { log.warn("客商公开页流程消息未找到客商id,跳过同步当前节点"); } else { @@ -129,14 +129,48 @@ public class CustomerArchivePublicController { } try { FR processInfoResult = businessProcessClient.getProcessInfo(processId, loginName); + Object processInfo = processInfoResult == null ? null : processInfoResult.getData(); log.info("客商公开页流程消息流程实例详情 processId={} loginName={} result={}", - processId, loginName, JSON.toJSONString(processInfoResult == null ? null : processInfoResult.getData())); + processId, loginName, JSON.toJSONString(processInfo)); + if (isProcessFinished(processInfo)) { + applyProcessResult(customerIdText, processId, formValues, true); + } else if (isProcessRejected(processInfo)) { + applyProcessResult(customerIdText, processId, formValues, false); + } } catch (Exception e) { log.error("客商公开页查询流程实例详情失败 processId={} loginName={}", processId, loginName, e); } return R.success("ok"); } + private static boolean isProcessFinished(Object processInfo) { + return "30".equals(firstText(asMap(processInfo), "fdProcessStatus")); + } + + private static boolean isProcessRejected(Object processInfo) { + return "20".equals(firstText(asMap(processInfo), "fdProcessStatus")); + } + + private void applyProcessResult(String customerIdText, String processId, Map formValues, + boolean approved) { + String action = approved ? "审核通过" : "审核驳回"; + if (StringUtil.isBlank(customerIdText)) { + log.warn("流程{}但未找到客商id,跳过同步 processId={}", action, processId); + return; + } + try { + String processorName = firstText(formValues, "mkUserName", "mkLoginName"); + Long customerId = Long.valueOf(customerIdText); + if (approved) { + customerArchiveService.approveFromProcess(customerId, processorName); + } else { + customerArchiveService.rejectFromProcess(customerId, processorName); + } + } catch (NumberFormatException e) { + log.warn("流程{}但客商id格式不正确:{}", action, customerIdText); + } + } + private static Map asMap(Object value) { if (!(value instanceof Map map)) { return Collections.emptyMap(); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java index 66257c0..2541545 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/ICustomerArchiveService.java @@ -120,6 +120,24 @@ public interface ICustomerArchiveService extends BaseService { */ boolean syncProcessNodeFromMk(Long id, Object currentNodes); + /** + * MK 流程结束(fdProcessStatus=30)时将客商置为审核通过 + * + * @param id 客商ID + * @param processorName 当前处理人,可为空 + * @return 是否成功 + */ + boolean approveFromProcess(Long id, String processorName); + + /** + * MK 流程状态为 20 时将客商置为审核驳回 + * + * @param id 客商ID + * @param processorName 当前处理人,可为空 + * @return 是否成功 + */ + boolean rejectFromProcess(Long id, String processorName); + /** * 撤回审批并恢复草稿状态 * diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java index fbbdc4c..fe43c51 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/CustomerArchiveServiceImpl.java @@ -284,6 +284,62 @@ public class CustomerArchiveServiceImpl extends BaseServiceImpl