|
|
@@ -71,6 +71,9 @@ public class CompanyWorkflowEngineImpl implements CompanyWorkflowEngine {
|
|
|
@Autowired
|
|
|
CompanyWxAccountMapper companyWxAccountMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ CompanyWxClientMapper companyWxClientMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 初始化工作流
|
|
|
* 创建工作流实例并保存初始状态
|
|
|
@@ -632,6 +635,60 @@ public class CompanyWorkflowEngineImpl implements CompanyWorkflowEngine {
|
|
|
companyWxAccount.setRemark( remark);
|
|
|
companyWxAccountMapper.updateCompanyWxAccount(companyWxAccount);
|
|
|
}
|
|
|
+
|
|
|
+ // 加载当前执行记录
|
|
|
+ CompanyAiWorkflowExec currentExec = currentExecutionMapper.selectByWorkflowInstanceId(workflowInstanceId);
|
|
|
+
|
|
|
+ if (currentExec == null) {
|
|
|
+ throw new CustomException("工作流实例不存在: " + workflowInstanceId);
|
|
|
+ }
|
|
|
+ //更新加微结果到wxClient表
|
|
|
+ updateWxClientSuccessByWorkflowInstanceId(workflowInstanceId);
|
|
|
+ // 验证当前节点是否匹配
|
|
|
+ if (!nodeKey.equals(currentExec.getCurrentNodeKey())) {
|
|
|
+ log.error("节点不匹配 - 期望: {}, 实际: {}", nodeKey, currentExec.getCurrentNodeKey());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查当前工作流是否处于暂停状态
|
|
|
+ if (!Integer.valueOf(ExecutionStatusEnum.PAUSED.getValue()).equals(currentExec.getStatus()) &&
|
|
|
+ !Integer.valueOf(ExecutionStatusEnum.WAITING.getValue()).equals(currentExec.getStatus())) {
|
|
|
+ log.error("工作流未处于暂停状态,无法唤醒::{} " , workflowInstanceId);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 反序列化执行上下文并合并新的输入数据
|
|
|
+ ExecutionContext context = deserializeContext(currentExec);
|
|
|
+
|
|
|
+ // 加载工作流定义
|
|
|
+ CompanyWorkflow definition = loadCompanyWorkflow(currentExec.getWorkflowId());
|
|
|
+
|
|
|
+ // 创建节点实例
|
|
|
+ IWorkflowNode node = createNode(definition, nodeKey);
|
|
|
+ if (node == null) {
|
|
|
+ throw new CustomException("节点不存在: " + nodeKey);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 继续执行节点逻辑
|
|
|
+ ExecutionResult result = node.continueExecute(context);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新加微结果到wxClient表
|
|
|
+ * @param workflowInstanceId
|
|
|
+ */
|
|
|
+ public void updateWxClientSuccessByWorkflowInstanceId(String workflowInstanceId){
|
|
|
+ Long id = currentExecutionMapper.selectWxClientIdByWorkflowInstanceId(workflowInstanceId);
|
|
|
+ CompanyWxClient client = companyWxClientMapper.selectCompanyWxClientById(id);
|
|
|
+ if(null != client && !Integer.valueOf(1).equals(client.getIsAdd())){
|
|
|
+ //更新wxClient表
|
|
|
+ CompanyWxClient companyWxClient = new CompanyWxClient();
|
|
|
+ companyWxClient.setId(id);
|
|
|
+ companyWxClient.setIsAdd(1);
|
|
|
+ companyWxClient.setSuccessAddTime(LocalDateTime.now());
|
|
|
+ companyWxClientMapper.updateCompanyWxClient(companyWxClient);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|